



<!DOCTYPE html>
<html>
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >
 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" >
 
 <meta name="ROBOTS" content="NOARCHIVE">
 
 <link rel="icon" type="image/vnd.microsoft.icon" href="http://www.gstatic.com/codesite/ph/images/phosting.ico">
 
 
 <script type="text/javascript">
 
 (function(){(function(){function c(a){this.t={};this.tick=function(a,b,c){b=void 0!=c?c:(new Date).getTime();this.t[a]=b;if(void 0==c)try{window.console.timeStamp("CSI/"+a)}catch(d){}};this.tick("start",null,a)}var a;window.performance&&(a=window.performance.timing);var b=a?new c(a.responseStart):new c;window.jstiming={Timer:c,load:b};a&&(b=a.navigationStart,a=a.responseStart,0<b&&a>=b&&(window.jstiming.srt=a-b));try{a=null,window.chrome&&window.chrome.csi&&(a=Math.floor(window.chrome.csi().pageT)),null==a&&
window.gtbExternal&&(a=window.gtbExternal.pageT()),null==a&&window.external&&(a=window.external.pageT),a&&(window.jstiming.pt=a)}catch(d){}})();})();

 
 
 
 
 var codesite_token = null;
 
 
 var CS_env = {"token": null, "projectName": "hproof-notes", "domainName": null, "profileUrl": null, "assetVersionPath": "http://www.gstatic.com/codesite/ph/18133036155640238800", "assetHostPath": "http://www.gstatic.com/codesite/ph", "loggedInUserEmail": null, "relativeBaseUrl": "", "projectHomeUrl": "/p/hproof-notes"};
 var _gaq = _gaq || [];
 _gaq.push(
 ['siteTracker._setAccount', 'UA-18071-1'],
 ['siteTracker._trackPageview']);
 
 (function() {
 var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
 ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
 (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga);
 })();
 
 </script>
 
 
 <title>avm2.txt - 
 hproof-notes -
 
 
 日常记录 - Google Project Hosting
 </title>
 <link type="text/css" rel="stylesheet" href="http://www.gstatic.com/codesite/ph/18133036155640238800/css/core.css">
 
 <link type="text/css" rel="stylesheet" href="http://www.gstatic.com/codesite/ph/18133036155640238800/css/ph_detail.css" >
 
 
 <link type="text/css" rel="stylesheet" href="http://www.gstatic.com/codesite/ph/18133036155640238800/css/d_sb.css" >
 
 
 
<!--[if IE]>
 <link type="text/css" rel="stylesheet" href="http://www.gstatic.com/codesite/ph/18133036155640238800/css/d_ie.css" >
<![endif]-->
 <style type="text/css">
 .menuIcon.off { background: no-repeat url(http://www.gstatic.com/codesite/ph/images/dropdown_sprite.gif) 0 -42px }
 .menuIcon.on { background: no-repeat url(http://www.gstatic.com/codesite/ph/images/dropdown_sprite.gif) 0 -28px }
 .menuIcon.down { background: no-repeat url(http://www.gstatic.com/codesite/ph/images/dropdown_sprite.gif) 0 0; }
 
 
 
  tr.inline_comment {
 background: #fff;
 vertical-align: top;
 }
 div.draft, div.published {
 padding: .3em;
 border: 1px solid #999; 
 margin-bottom: .1em;
 font-family: arial, sans-serif;
 max-width: 60em;
 }
 div.draft {
 background: #ffa;
 } 
 div.published {
 background: #e5ecf9;
 }
 div.published .body, div.draft .body {
 padding: .5em .1em .1em .1em;
 max-width: 60em;
 white-space: pre-wrap;
 white-space: -moz-pre-wrap;
 white-space: -pre-wrap;
 white-space: -o-pre-wrap;
 word-wrap: break-word;
 font-size: 1em;
 }
 div.draft .actions {
 margin-left: 1em;
 font-size: 90%;
 }
 div.draft form {
 padding: .5em .5em .5em 0;
 }
 div.draft textarea, div.published textarea {
 width: 95%;
 height: 10em;
 font-family: arial, sans-serif;
 margin-bottom: .5em;
 }

 
 .nocursor, .nocursor td, .cursor_hidden, .cursor_hidden td {
 background-color: white;
 height: 2px;
 }
 .cursor, .cursor td {
 background-color: darkblue;
 height: 2px;
 display: '';
 }
 
 
.list {
 border: 1px solid white;
 border-bottom: 0;
}

 
 </style>
</head>
<body class="t4">
<script type="text/javascript">
 window.___gcfg = {lang: 'en'};
 (function() 
 {var po = document.createElement("script");
 po.type = "text/javascript"; po.async = true;po.src = "https://apis.google.com/js/plusone.js";
 var s = document.getElementsByTagName("script")[0];
 s.parentNode.insertBefore(po, s);
 })();
</script>
<div class="headbg">

 <div id="gaia">
 

 <span>
 
 
 <a href="#" id="projects-dropdown" onclick="return false;"><u>My favorites</u> <small>&#9660;</small></a>
 | <a href="https://www.google.com/accounts/ServiceLogin?service=code&amp;ltmpl=phosting&amp;continue=http%3A%2F%2Fcode.google.com%2Fp%2Fhproof-notes%2Fsource%2Fbrowse%2Ftrunk%2Fflash%2Favm2.txt%3Fr%3D237&amp;followup=http%3A%2F%2Fcode.google.com%2Fp%2Fhproof-notes%2Fsource%2Fbrowse%2Ftrunk%2Fflash%2Favm2.txt%3Fr%3D237" onclick="_CS_click('/gb/ph/signin');"><u>Sign in</u></a>
 
 </span>

 </div>

 <div class="gbh" style="left: 0pt;"></div>
 <div class="gbh" style="right: 0pt;"></div>
 
 
 <div style="height: 1px"></div>
<!--[if lte IE 7]>
<div style="text-align:center;">
Your version of Internet Explorer is not supported. Try a browser that
contributes to open source, such as <a href="http://www.firefox.com">Firefox</a>,
<a href="http://www.google.com/chrome">Google Chrome</a>, or
<a href="http://code.google.com/chrome/chromeframe/">Google Chrome Frame</a>.
</div>
<![endif]-->



 <table style="padding:0px; margin: 0px 0px 10px 0px; width:100%" cellpadding="0" cellspacing="0"
 itemscope itemtype="http://schema.org/CreativeWork">
 <tr style="height: 58px;">
 
 
 
 <td id="plogo">
 <link itemprop="url" href="/p/hproof-notes">
 <a href="/p/hproof-notes/">
 
 <img src="http://www.gstatic.com/codesite/ph/images/defaultlogo.png" alt="Logo" itemprop="image">
 
 </a>
 </td>
 
 <td style="padding-left: 0.5em">
 
 <div id="pname">
 <a href="/p/hproof-notes/"><span itemprop="name">hproof-notes</span></a>
 </div>
 
 <div id="psum">
 <a id="project_summary_link"
 href="/p/hproof-notes/"><span itemprop="description">日常记录</span></a>
 
 </div>
 
 
 </td>
 <td style="white-space:nowrap;text-align:right; vertical-align:bottom;">
 
 <form action="/hosting/search">
 <input size="30" name="q" value="" type="text">
 
 <input type="submit" name="projectsearch" value="Search projects" >
 </form>
 
 </tr>
 </table>

</div>

 
<div id="mt" class="gtb"> 
 <a href="/p/hproof-notes/" class="tab ">Project&nbsp;Home</a>
 
 
 
 
 <a href="/p/hproof-notes/downloads/list" class="tab ">Downloads</a>
 
 
 
 
 
 <a href="/p/hproof-notes/w/list" class="tab ">Wiki</a>
 
 
 
 
 
 <a href="/p/hproof-notes/issues/list"
 class="tab ">Issues</a>
 
 
 
 
 
 <a href="/p/hproof-notes/source/checkout"
 class="tab active">Source</a>
 
 
 
 
 
 
 
 
 <div class=gtbc></div>
</div>
<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0" class="st">
 <tr>
 
 
 
 
 
 
 <td class="subt">
 <div class="st2">
 <div class="isf">
 
 


 <span class="inst1"><a href="/p/hproof-notes/source/checkout">Checkout</a></span> &nbsp;
 <span class="inst2"><a href="/p/hproof-notes/source/browse/">Browse</a></span> &nbsp;
 <span class="inst3"><a href="/p/hproof-notes/source/list">Changes</a></span> &nbsp;
 
 
 
 </form>
 <script type="text/javascript">
 
 function codesearchQuery(form) {
 var query = document.getElementById('q').value;
 if (query) { form.action += '%20' + query; }
 }
 </script>
 </div>
</div>

 </td>
 
 
 
 <td align="right" valign="top" class="bevel-right"></td>
 </tr>
</table>


<script type="text/javascript">
 var cancelBubble = false;
 function _go(url) { document.location = url; }
</script>
<div id="maincol"
 
>

 




<div class="expand">
<div id="colcontrol">
<style type="text/css">
 #file_flipper { white-space: nowrap; padding-right: 2em; }
 #file_flipper.hidden { display: none; }
 #file_flipper .pagelink { color: #0000CC; text-decoration: underline; }
 #file_flipper #visiblefiles { padding-left: 0.5em; padding-right: 0.5em; }
</style>
<table id="nav_and_rev" class="list"
 cellpadding="0" cellspacing="0" width="100%">
 <tr>
 
 <td nowrap="nowrap" class="src_crumbs src_nav" width="33%">
 <strong class="src_nav">Source path:&nbsp;</strong>
 <span id="crumb_root">
 
 <a href="/p/hproof-notes/source/browse/?r=237">svn</a>/&nbsp;</span>
 <span id="crumb_links" class="ifClosed"><a href="/p/hproof-notes/source/browse/trunk/?r=237">trunk</a><span class="sp">/&nbsp;</span><a href="/p/hproof-notes/source/browse/trunk/flash/?r=237">flash</a><span class="sp">/&nbsp;</span>avm2.txt</span>
 
 


 </td>
 
 
 <td nowrap="nowrap" width="33%" align="right">
 <table cellpadding="0" cellspacing="0" style="font-size: 100%"><tr>
 
 
 <td class="flipper"><b>r237</b></td>
 
 </tr></table>
 </td> 
 </tr>
</table>

<div class="fc">
 
 
 
<style type="text/css">
.undermouse span {
 background-image: url(http://www.gstatic.com/codesite/ph/images/comments.gif); }
</style>
<table class="opened" id="review_comment_area"
><tr>
<td id="nums">
<pre><table width="100%"><tr class="nocursor"><td></td></tr></table></pre>
<pre><table width="100%" id="nums_table_0"><tr id="gr_svn237_1"

><td id="1"><a href="#1">1</a></td></tr
><tr id="gr_svn237_2"

><td id="2"><a href="#2">2</a></td></tr
><tr id="gr_svn237_3"

><td id="3"><a href="#3">3</a></td></tr
><tr id="gr_svn237_4"

><td id="4"><a href="#4">4</a></td></tr
><tr id="gr_svn237_5"

><td id="5"><a href="#5">5</a></td></tr
><tr id="gr_svn237_6"

><td id="6"><a href="#6">6</a></td></tr
><tr id="gr_svn237_7"

><td id="7"><a href="#7">7</a></td></tr
><tr id="gr_svn237_8"

><td id="8"><a href="#8">8</a></td></tr
><tr id="gr_svn237_9"

><td id="9"><a href="#9">9</a></td></tr
><tr id="gr_svn237_10"

><td id="10"><a href="#10">10</a></td></tr
><tr id="gr_svn237_11"

><td id="11"><a href="#11">11</a></td></tr
><tr id="gr_svn237_12"

><td id="12"><a href="#12">12</a></td></tr
><tr id="gr_svn237_13"

><td id="13"><a href="#13">13</a></td></tr
><tr id="gr_svn237_14"

><td id="14"><a href="#14">14</a></td></tr
><tr id="gr_svn237_15"

><td id="15"><a href="#15">15</a></td></tr
><tr id="gr_svn237_16"

><td id="16"><a href="#16">16</a></td></tr
><tr id="gr_svn237_17"

><td id="17"><a href="#17">17</a></td></tr
><tr id="gr_svn237_18"

><td id="18"><a href="#18">18</a></td></tr
><tr id="gr_svn237_19"

><td id="19"><a href="#19">19</a></td></tr
><tr id="gr_svn237_20"

><td id="20"><a href="#20">20</a></td></tr
><tr id="gr_svn237_21"

><td id="21"><a href="#21">21</a></td></tr
><tr id="gr_svn237_22"

><td id="22"><a href="#22">22</a></td></tr
><tr id="gr_svn237_23"

><td id="23"><a href="#23">23</a></td></tr
><tr id="gr_svn237_24"

><td id="24"><a href="#24">24</a></td></tr
><tr id="gr_svn237_25"

><td id="25"><a href="#25">25</a></td></tr
><tr id="gr_svn237_26"

><td id="26"><a href="#26">26</a></td></tr
><tr id="gr_svn237_27"

><td id="27"><a href="#27">27</a></td></tr
><tr id="gr_svn237_28"

><td id="28"><a href="#28">28</a></td></tr
><tr id="gr_svn237_29"

><td id="29"><a href="#29">29</a></td></tr
><tr id="gr_svn237_30"

><td id="30"><a href="#30">30</a></td></tr
><tr id="gr_svn237_31"

><td id="31"><a href="#31">31</a></td></tr
><tr id="gr_svn237_32"

><td id="32"><a href="#32">32</a></td></tr
><tr id="gr_svn237_33"

><td id="33"><a href="#33">33</a></td></tr
><tr id="gr_svn237_34"

><td id="34"><a href="#34">34</a></td></tr
><tr id="gr_svn237_35"

><td id="35"><a href="#35">35</a></td></tr
><tr id="gr_svn237_36"

><td id="36"><a href="#36">36</a></td></tr
><tr id="gr_svn237_37"

><td id="37"><a href="#37">37</a></td></tr
><tr id="gr_svn237_38"

><td id="38"><a href="#38">38</a></td></tr
><tr id="gr_svn237_39"

><td id="39"><a href="#39">39</a></td></tr
><tr id="gr_svn237_40"

><td id="40"><a href="#40">40</a></td></tr
><tr id="gr_svn237_41"

><td id="41"><a href="#41">41</a></td></tr
><tr id="gr_svn237_42"

><td id="42"><a href="#42">42</a></td></tr
><tr id="gr_svn237_43"

><td id="43"><a href="#43">43</a></td></tr
><tr id="gr_svn237_44"

><td id="44"><a href="#44">44</a></td></tr
><tr id="gr_svn237_45"

><td id="45"><a href="#45">45</a></td></tr
><tr id="gr_svn237_46"

><td id="46"><a href="#46">46</a></td></tr
><tr id="gr_svn237_47"

><td id="47"><a href="#47">47</a></td></tr
><tr id="gr_svn237_48"

><td id="48"><a href="#48">48</a></td></tr
><tr id="gr_svn237_49"

><td id="49"><a href="#49">49</a></td></tr
><tr id="gr_svn237_50"

><td id="50"><a href="#50">50</a></td></tr
><tr id="gr_svn237_51"

><td id="51"><a href="#51">51</a></td></tr
><tr id="gr_svn237_52"

><td id="52"><a href="#52">52</a></td></tr
><tr id="gr_svn237_53"

><td id="53"><a href="#53">53</a></td></tr
><tr id="gr_svn237_54"

><td id="54"><a href="#54">54</a></td></tr
><tr id="gr_svn237_55"

><td id="55"><a href="#55">55</a></td></tr
><tr id="gr_svn237_56"

><td id="56"><a href="#56">56</a></td></tr
><tr id="gr_svn237_57"

><td id="57"><a href="#57">57</a></td></tr
><tr id="gr_svn237_58"

><td id="58"><a href="#58">58</a></td></tr
><tr id="gr_svn237_59"

><td id="59"><a href="#59">59</a></td></tr
><tr id="gr_svn237_60"

><td id="60"><a href="#60">60</a></td></tr
><tr id="gr_svn237_61"

><td id="61"><a href="#61">61</a></td></tr
><tr id="gr_svn237_62"

><td id="62"><a href="#62">62</a></td></tr
><tr id="gr_svn237_63"

><td id="63"><a href="#63">63</a></td></tr
><tr id="gr_svn237_64"

><td id="64"><a href="#64">64</a></td></tr
><tr id="gr_svn237_65"

><td id="65"><a href="#65">65</a></td></tr
><tr id="gr_svn237_66"

><td id="66"><a href="#66">66</a></td></tr
><tr id="gr_svn237_67"

><td id="67"><a href="#67">67</a></td></tr
><tr id="gr_svn237_68"

><td id="68"><a href="#68">68</a></td></tr
><tr id="gr_svn237_69"

><td id="69"><a href="#69">69</a></td></tr
><tr id="gr_svn237_70"

><td id="70"><a href="#70">70</a></td></tr
><tr id="gr_svn237_71"

><td id="71"><a href="#71">71</a></td></tr
><tr id="gr_svn237_72"

><td id="72"><a href="#72">72</a></td></tr
><tr id="gr_svn237_73"

><td id="73"><a href="#73">73</a></td></tr
><tr id="gr_svn237_74"

><td id="74"><a href="#74">74</a></td></tr
><tr id="gr_svn237_75"

><td id="75"><a href="#75">75</a></td></tr
><tr id="gr_svn237_76"

><td id="76"><a href="#76">76</a></td></tr
><tr id="gr_svn237_77"

><td id="77"><a href="#77">77</a></td></tr
><tr id="gr_svn237_78"

><td id="78"><a href="#78">78</a></td></tr
><tr id="gr_svn237_79"

><td id="79"><a href="#79">79</a></td></tr
><tr id="gr_svn237_80"

><td id="80"><a href="#80">80</a></td></tr
><tr id="gr_svn237_81"

><td id="81"><a href="#81">81</a></td></tr
><tr id="gr_svn237_82"

><td id="82"><a href="#82">82</a></td></tr
><tr id="gr_svn237_83"

><td id="83"><a href="#83">83</a></td></tr
><tr id="gr_svn237_84"

><td id="84"><a href="#84">84</a></td></tr
><tr id="gr_svn237_85"

><td id="85"><a href="#85">85</a></td></tr
><tr id="gr_svn237_86"

><td id="86"><a href="#86">86</a></td></tr
><tr id="gr_svn237_87"

><td id="87"><a href="#87">87</a></td></tr
><tr id="gr_svn237_88"

><td id="88"><a href="#88">88</a></td></tr
><tr id="gr_svn237_89"

><td id="89"><a href="#89">89</a></td></tr
><tr id="gr_svn237_90"

><td id="90"><a href="#90">90</a></td></tr
><tr id="gr_svn237_91"

><td id="91"><a href="#91">91</a></td></tr
><tr id="gr_svn237_92"

><td id="92"><a href="#92">92</a></td></tr
><tr id="gr_svn237_93"

><td id="93"><a href="#93">93</a></td></tr
><tr id="gr_svn237_94"

><td id="94"><a href="#94">94</a></td></tr
><tr id="gr_svn237_95"

><td id="95"><a href="#95">95</a></td></tr
><tr id="gr_svn237_96"

><td id="96"><a href="#96">96</a></td></tr
><tr id="gr_svn237_97"

><td id="97"><a href="#97">97</a></td></tr
><tr id="gr_svn237_98"

><td id="98"><a href="#98">98</a></td></tr
><tr id="gr_svn237_99"

><td id="99"><a href="#99">99</a></td></tr
><tr id="gr_svn237_100"

><td id="100"><a href="#100">100</a></td></tr
><tr id="gr_svn237_101"

><td id="101"><a href="#101">101</a></td></tr
><tr id="gr_svn237_102"

><td id="102"><a href="#102">102</a></td></tr
><tr id="gr_svn237_103"

><td id="103"><a href="#103">103</a></td></tr
><tr id="gr_svn237_104"

><td id="104"><a href="#104">104</a></td></tr
><tr id="gr_svn237_105"

><td id="105"><a href="#105">105</a></td></tr
><tr id="gr_svn237_106"

><td id="106"><a href="#106">106</a></td></tr
><tr id="gr_svn237_107"

><td id="107"><a href="#107">107</a></td></tr
><tr id="gr_svn237_108"

><td id="108"><a href="#108">108</a></td></tr
><tr id="gr_svn237_109"

><td id="109"><a href="#109">109</a></td></tr
><tr id="gr_svn237_110"

><td id="110"><a href="#110">110</a></td></tr
><tr id="gr_svn237_111"

><td id="111"><a href="#111">111</a></td></tr
><tr id="gr_svn237_112"

><td id="112"><a href="#112">112</a></td></tr
><tr id="gr_svn237_113"

><td id="113"><a href="#113">113</a></td></tr
><tr id="gr_svn237_114"

><td id="114"><a href="#114">114</a></td></tr
><tr id="gr_svn237_115"

><td id="115"><a href="#115">115</a></td></tr
><tr id="gr_svn237_116"

><td id="116"><a href="#116">116</a></td></tr
><tr id="gr_svn237_117"

><td id="117"><a href="#117">117</a></td></tr
><tr id="gr_svn237_118"

><td id="118"><a href="#118">118</a></td></tr
><tr id="gr_svn237_119"

><td id="119"><a href="#119">119</a></td></tr
><tr id="gr_svn237_120"

><td id="120"><a href="#120">120</a></td></tr
><tr id="gr_svn237_121"

><td id="121"><a href="#121">121</a></td></tr
><tr id="gr_svn237_122"

><td id="122"><a href="#122">122</a></td></tr
><tr id="gr_svn237_123"

><td id="123"><a href="#123">123</a></td></tr
><tr id="gr_svn237_124"

><td id="124"><a href="#124">124</a></td></tr
><tr id="gr_svn237_125"

><td id="125"><a href="#125">125</a></td></tr
><tr id="gr_svn237_126"

><td id="126"><a href="#126">126</a></td></tr
><tr id="gr_svn237_127"

><td id="127"><a href="#127">127</a></td></tr
><tr id="gr_svn237_128"

><td id="128"><a href="#128">128</a></td></tr
><tr id="gr_svn237_129"

><td id="129"><a href="#129">129</a></td></tr
><tr id="gr_svn237_130"

><td id="130"><a href="#130">130</a></td></tr
><tr id="gr_svn237_131"

><td id="131"><a href="#131">131</a></td></tr
><tr id="gr_svn237_132"

><td id="132"><a href="#132">132</a></td></tr
><tr id="gr_svn237_133"

><td id="133"><a href="#133">133</a></td></tr
><tr id="gr_svn237_134"

><td id="134"><a href="#134">134</a></td></tr
><tr id="gr_svn237_135"

><td id="135"><a href="#135">135</a></td></tr
><tr id="gr_svn237_136"

><td id="136"><a href="#136">136</a></td></tr
><tr id="gr_svn237_137"

><td id="137"><a href="#137">137</a></td></tr
><tr id="gr_svn237_138"

><td id="138"><a href="#138">138</a></td></tr
><tr id="gr_svn237_139"

><td id="139"><a href="#139">139</a></td></tr
><tr id="gr_svn237_140"

><td id="140"><a href="#140">140</a></td></tr
><tr id="gr_svn237_141"

><td id="141"><a href="#141">141</a></td></tr
><tr id="gr_svn237_142"

><td id="142"><a href="#142">142</a></td></tr
><tr id="gr_svn237_143"

><td id="143"><a href="#143">143</a></td></tr
><tr id="gr_svn237_144"

><td id="144"><a href="#144">144</a></td></tr
><tr id="gr_svn237_145"

><td id="145"><a href="#145">145</a></td></tr
><tr id="gr_svn237_146"

><td id="146"><a href="#146">146</a></td></tr
><tr id="gr_svn237_147"

><td id="147"><a href="#147">147</a></td></tr
><tr id="gr_svn237_148"

><td id="148"><a href="#148">148</a></td></tr
><tr id="gr_svn237_149"

><td id="149"><a href="#149">149</a></td></tr
><tr id="gr_svn237_150"

><td id="150"><a href="#150">150</a></td></tr
><tr id="gr_svn237_151"

><td id="151"><a href="#151">151</a></td></tr
><tr id="gr_svn237_152"

><td id="152"><a href="#152">152</a></td></tr
><tr id="gr_svn237_153"

><td id="153"><a href="#153">153</a></td></tr
><tr id="gr_svn237_154"

><td id="154"><a href="#154">154</a></td></tr
><tr id="gr_svn237_155"

><td id="155"><a href="#155">155</a></td></tr
><tr id="gr_svn237_156"

><td id="156"><a href="#156">156</a></td></tr
><tr id="gr_svn237_157"

><td id="157"><a href="#157">157</a></td></tr
><tr id="gr_svn237_158"

><td id="158"><a href="#158">158</a></td></tr
><tr id="gr_svn237_159"

><td id="159"><a href="#159">159</a></td></tr
><tr id="gr_svn237_160"

><td id="160"><a href="#160">160</a></td></tr
><tr id="gr_svn237_161"

><td id="161"><a href="#161">161</a></td></tr
><tr id="gr_svn237_162"

><td id="162"><a href="#162">162</a></td></tr
><tr id="gr_svn237_163"

><td id="163"><a href="#163">163</a></td></tr
><tr id="gr_svn237_164"

><td id="164"><a href="#164">164</a></td></tr
><tr id="gr_svn237_165"

><td id="165"><a href="#165">165</a></td></tr
><tr id="gr_svn237_166"

><td id="166"><a href="#166">166</a></td></tr
><tr id="gr_svn237_167"

><td id="167"><a href="#167">167</a></td></tr
><tr id="gr_svn237_168"

><td id="168"><a href="#168">168</a></td></tr
><tr id="gr_svn237_169"

><td id="169"><a href="#169">169</a></td></tr
><tr id="gr_svn237_170"

><td id="170"><a href="#170">170</a></td></tr
><tr id="gr_svn237_171"

><td id="171"><a href="#171">171</a></td></tr
><tr id="gr_svn237_172"

><td id="172"><a href="#172">172</a></td></tr
><tr id="gr_svn237_173"

><td id="173"><a href="#173">173</a></td></tr
><tr id="gr_svn237_174"

><td id="174"><a href="#174">174</a></td></tr
><tr id="gr_svn237_175"

><td id="175"><a href="#175">175</a></td></tr
><tr id="gr_svn237_176"

><td id="176"><a href="#176">176</a></td></tr
><tr id="gr_svn237_177"

><td id="177"><a href="#177">177</a></td></tr
><tr id="gr_svn237_178"

><td id="178"><a href="#178">178</a></td></tr
><tr id="gr_svn237_179"

><td id="179"><a href="#179">179</a></td></tr
><tr id="gr_svn237_180"

><td id="180"><a href="#180">180</a></td></tr
><tr id="gr_svn237_181"

><td id="181"><a href="#181">181</a></td></tr
><tr id="gr_svn237_182"

><td id="182"><a href="#182">182</a></td></tr
><tr id="gr_svn237_183"

><td id="183"><a href="#183">183</a></td></tr
><tr id="gr_svn237_184"

><td id="184"><a href="#184">184</a></td></tr
><tr id="gr_svn237_185"

><td id="185"><a href="#185">185</a></td></tr
><tr id="gr_svn237_186"

><td id="186"><a href="#186">186</a></td></tr
><tr id="gr_svn237_187"

><td id="187"><a href="#187">187</a></td></tr
><tr id="gr_svn237_188"

><td id="188"><a href="#188">188</a></td></tr
><tr id="gr_svn237_189"

><td id="189"><a href="#189">189</a></td></tr
><tr id="gr_svn237_190"

><td id="190"><a href="#190">190</a></td></tr
><tr id="gr_svn237_191"

><td id="191"><a href="#191">191</a></td></tr
><tr id="gr_svn237_192"

><td id="192"><a href="#192">192</a></td></tr
><tr id="gr_svn237_193"

><td id="193"><a href="#193">193</a></td></tr
><tr id="gr_svn237_194"

><td id="194"><a href="#194">194</a></td></tr
><tr id="gr_svn237_195"

><td id="195"><a href="#195">195</a></td></tr
><tr id="gr_svn237_196"

><td id="196"><a href="#196">196</a></td></tr
><tr id="gr_svn237_197"

><td id="197"><a href="#197">197</a></td></tr
><tr id="gr_svn237_198"

><td id="198"><a href="#198">198</a></td></tr
><tr id="gr_svn237_199"

><td id="199"><a href="#199">199</a></td></tr
><tr id="gr_svn237_200"

><td id="200"><a href="#200">200</a></td></tr
><tr id="gr_svn237_201"

><td id="201"><a href="#201">201</a></td></tr
><tr id="gr_svn237_202"

><td id="202"><a href="#202">202</a></td></tr
><tr id="gr_svn237_203"

><td id="203"><a href="#203">203</a></td></tr
><tr id="gr_svn237_204"

><td id="204"><a href="#204">204</a></td></tr
><tr id="gr_svn237_205"

><td id="205"><a href="#205">205</a></td></tr
><tr id="gr_svn237_206"

><td id="206"><a href="#206">206</a></td></tr
><tr id="gr_svn237_207"

><td id="207"><a href="#207">207</a></td></tr
><tr id="gr_svn237_208"

><td id="208"><a href="#208">208</a></td></tr
><tr id="gr_svn237_209"

><td id="209"><a href="#209">209</a></td></tr
><tr id="gr_svn237_210"

><td id="210"><a href="#210">210</a></td></tr
><tr id="gr_svn237_211"

><td id="211"><a href="#211">211</a></td></tr
><tr id="gr_svn237_212"

><td id="212"><a href="#212">212</a></td></tr
><tr id="gr_svn237_213"

><td id="213"><a href="#213">213</a></td></tr
><tr id="gr_svn237_214"

><td id="214"><a href="#214">214</a></td></tr
><tr id="gr_svn237_215"

><td id="215"><a href="#215">215</a></td></tr
><tr id="gr_svn237_216"

><td id="216"><a href="#216">216</a></td></tr
><tr id="gr_svn237_217"

><td id="217"><a href="#217">217</a></td></tr
><tr id="gr_svn237_218"

><td id="218"><a href="#218">218</a></td></tr
><tr id="gr_svn237_219"

><td id="219"><a href="#219">219</a></td></tr
><tr id="gr_svn237_220"

><td id="220"><a href="#220">220</a></td></tr
><tr id="gr_svn237_221"

><td id="221"><a href="#221">221</a></td></tr
><tr id="gr_svn237_222"

><td id="222"><a href="#222">222</a></td></tr
><tr id="gr_svn237_223"

><td id="223"><a href="#223">223</a></td></tr
><tr id="gr_svn237_224"

><td id="224"><a href="#224">224</a></td></tr
><tr id="gr_svn237_225"

><td id="225"><a href="#225">225</a></td></tr
><tr id="gr_svn237_226"

><td id="226"><a href="#226">226</a></td></tr
><tr id="gr_svn237_227"

><td id="227"><a href="#227">227</a></td></tr
><tr id="gr_svn237_228"

><td id="228"><a href="#228">228</a></td></tr
><tr id="gr_svn237_229"

><td id="229"><a href="#229">229</a></td></tr
><tr id="gr_svn237_230"

><td id="230"><a href="#230">230</a></td></tr
><tr id="gr_svn237_231"

><td id="231"><a href="#231">231</a></td></tr
><tr id="gr_svn237_232"

><td id="232"><a href="#232">232</a></td></tr
><tr id="gr_svn237_233"

><td id="233"><a href="#233">233</a></td></tr
><tr id="gr_svn237_234"

><td id="234"><a href="#234">234</a></td></tr
><tr id="gr_svn237_235"

><td id="235"><a href="#235">235</a></td></tr
><tr id="gr_svn237_236"

><td id="236"><a href="#236">236</a></td></tr
><tr id="gr_svn237_237"

><td id="237"><a href="#237">237</a></td></tr
><tr id="gr_svn237_238"

><td id="238"><a href="#238">238</a></td></tr
><tr id="gr_svn237_239"

><td id="239"><a href="#239">239</a></td></tr
><tr id="gr_svn237_240"

><td id="240"><a href="#240">240</a></td></tr
><tr id="gr_svn237_241"

><td id="241"><a href="#241">241</a></td></tr
><tr id="gr_svn237_242"

><td id="242"><a href="#242">242</a></td></tr
><tr id="gr_svn237_243"

><td id="243"><a href="#243">243</a></td></tr
><tr id="gr_svn237_244"

><td id="244"><a href="#244">244</a></td></tr
><tr id="gr_svn237_245"

><td id="245"><a href="#245">245</a></td></tr
><tr id="gr_svn237_246"

><td id="246"><a href="#246">246</a></td></tr
><tr id="gr_svn237_247"

><td id="247"><a href="#247">247</a></td></tr
><tr id="gr_svn237_248"

><td id="248"><a href="#248">248</a></td></tr
><tr id="gr_svn237_249"

><td id="249"><a href="#249">249</a></td></tr
><tr id="gr_svn237_250"

><td id="250"><a href="#250">250</a></td></tr
><tr id="gr_svn237_251"

><td id="251"><a href="#251">251</a></td></tr
><tr id="gr_svn237_252"

><td id="252"><a href="#252">252</a></td></tr
><tr id="gr_svn237_253"

><td id="253"><a href="#253">253</a></td></tr
><tr id="gr_svn237_254"

><td id="254"><a href="#254">254</a></td></tr
><tr id="gr_svn237_255"

><td id="255"><a href="#255">255</a></td></tr
><tr id="gr_svn237_256"

><td id="256"><a href="#256">256</a></td></tr
><tr id="gr_svn237_257"

><td id="257"><a href="#257">257</a></td></tr
><tr id="gr_svn237_258"

><td id="258"><a href="#258">258</a></td></tr
><tr id="gr_svn237_259"

><td id="259"><a href="#259">259</a></td></tr
><tr id="gr_svn237_260"

><td id="260"><a href="#260">260</a></td></tr
><tr id="gr_svn237_261"

><td id="261"><a href="#261">261</a></td></tr
><tr id="gr_svn237_262"

><td id="262"><a href="#262">262</a></td></tr
><tr id="gr_svn237_263"

><td id="263"><a href="#263">263</a></td></tr
><tr id="gr_svn237_264"

><td id="264"><a href="#264">264</a></td></tr
><tr id="gr_svn237_265"

><td id="265"><a href="#265">265</a></td></tr
><tr id="gr_svn237_266"

><td id="266"><a href="#266">266</a></td></tr
><tr id="gr_svn237_267"

><td id="267"><a href="#267">267</a></td></tr
><tr id="gr_svn237_268"

><td id="268"><a href="#268">268</a></td></tr
><tr id="gr_svn237_269"

><td id="269"><a href="#269">269</a></td></tr
><tr id="gr_svn237_270"

><td id="270"><a href="#270">270</a></td></tr
><tr id="gr_svn237_271"

><td id="271"><a href="#271">271</a></td></tr
><tr id="gr_svn237_272"

><td id="272"><a href="#272">272</a></td></tr
><tr id="gr_svn237_273"

><td id="273"><a href="#273">273</a></td></tr
><tr id="gr_svn237_274"

><td id="274"><a href="#274">274</a></td></tr
><tr id="gr_svn237_275"

><td id="275"><a href="#275">275</a></td></tr
><tr id="gr_svn237_276"

><td id="276"><a href="#276">276</a></td></tr
><tr id="gr_svn237_277"

><td id="277"><a href="#277">277</a></td></tr
><tr id="gr_svn237_278"

><td id="278"><a href="#278">278</a></td></tr
><tr id="gr_svn237_279"

><td id="279"><a href="#279">279</a></td></tr
><tr id="gr_svn237_280"

><td id="280"><a href="#280">280</a></td></tr
><tr id="gr_svn237_281"

><td id="281"><a href="#281">281</a></td></tr
><tr id="gr_svn237_282"

><td id="282"><a href="#282">282</a></td></tr
><tr id="gr_svn237_283"

><td id="283"><a href="#283">283</a></td></tr
><tr id="gr_svn237_284"

><td id="284"><a href="#284">284</a></td></tr
><tr id="gr_svn237_285"

><td id="285"><a href="#285">285</a></td></tr
><tr id="gr_svn237_286"

><td id="286"><a href="#286">286</a></td></tr
><tr id="gr_svn237_287"

><td id="287"><a href="#287">287</a></td></tr
><tr id="gr_svn237_288"

><td id="288"><a href="#288">288</a></td></tr
><tr id="gr_svn237_289"

><td id="289"><a href="#289">289</a></td></tr
><tr id="gr_svn237_290"

><td id="290"><a href="#290">290</a></td></tr
><tr id="gr_svn237_291"

><td id="291"><a href="#291">291</a></td></tr
><tr id="gr_svn237_292"

><td id="292"><a href="#292">292</a></td></tr
><tr id="gr_svn237_293"

><td id="293"><a href="#293">293</a></td></tr
><tr id="gr_svn237_294"

><td id="294"><a href="#294">294</a></td></tr
><tr id="gr_svn237_295"

><td id="295"><a href="#295">295</a></td></tr
><tr id="gr_svn237_296"

><td id="296"><a href="#296">296</a></td></tr
><tr id="gr_svn237_297"

><td id="297"><a href="#297">297</a></td></tr
><tr id="gr_svn237_298"

><td id="298"><a href="#298">298</a></td></tr
><tr id="gr_svn237_299"

><td id="299"><a href="#299">299</a></td></tr
><tr id="gr_svn237_300"

><td id="300"><a href="#300">300</a></td></tr
><tr id="gr_svn237_301"

><td id="301"><a href="#301">301</a></td></tr
><tr id="gr_svn237_302"

><td id="302"><a href="#302">302</a></td></tr
><tr id="gr_svn237_303"

><td id="303"><a href="#303">303</a></td></tr
><tr id="gr_svn237_304"

><td id="304"><a href="#304">304</a></td></tr
><tr id="gr_svn237_305"

><td id="305"><a href="#305">305</a></td></tr
><tr id="gr_svn237_306"

><td id="306"><a href="#306">306</a></td></tr
><tr id="gr_svn237_307"

><td id="307"><a href="#307">307</a></td></tr
><tr id="gr_svn237_308"

><td id="308"><a href="#308">308</a></td></tr
><tr id="gr_svn237_309"

><td id="309"><a href="#309">309</a></td></tr
><tr id="gr_svn237_310"

><td id="310"><a href="#310">310</a></td></tr
><tr id="gr_svn237_311"

><td id="311"><a href="#311">311</a></td></tr
><tr id="gr_svn237_312"

><td id="312"><a href="#312">312</a></td></tr
><tr id="gr_svn237_313"

><td id="313"><a href="#313">313</a></td></tr
><tr id="gr_svn237_314"

><td id="314"><a href="#314">314</a></td></tr
><tr id="gr_svn237_315"

><td id="315"><a href="#315">315</a></td></tr
><tr id="gr_svn237_316"

><td id="316"><a href="#316">316</a></td></tr
><tr id="gr_svn237_317"

><td id="317"><a href="#317">317</a></td></tr
><tr id="gr_svn237_318"

><td id="318"><a href="#318">318</a></td></tr
><tr id="gr_svn237_319"

><td id="319"><a href="#319">319</a></td></tr
><tr id="gr_svn237_320"

><td id="320"><a href="#320">320</a></td></tr
><tr id="gr_svn237_321"

><td id="321"><a href="#321">321</a></td></tr
><tr id="gr_svn237_322"

><td id="322"><a href="#322">322</a></td></tr
><tr id="gr_svn237_323"

><td id="323"><a href="#323">323</a></td></tr
><tr id="gr_svn237_324"

><td id="324"><a href="#324">324</a></td></tr
><tr id="gr_svn237_325"

><td id="325"><a href="#325">325</a></td></tr
><tr id="gr_svn237_326"

><td id="326"><a href="#326">326</a></td></tr
><tr id="gr_svn237_327"

><td id="327"><a href="#327">327</a></td></tr
><tr id="gr_svn237_328"

><td id="328"><a href="#328">328</a></td></tr
><tr id="gr_svn237_329"

><td id="329"><a href="#329">329</a></td></tr
><tr id="gr_svn237_330"

><td id="330"><a href="#330">330</a></td></tr
><tr id="gr_svn237_331"

><td id="331"><a href="#331">331</a></td></tr
><tr id="gr_svn237_332"

><td id="332"><a href="#332">332</a></td></tr
><tr id="gr_svn237_333"

><td id="333"><a href="#333">333</a></td></tr
><tr id="gr_svn237_334"

><td id="334"><a href="#334">334</a></td></tr
><tr id="gr_svn237_335"

><td id="335"><a href="#335">335</a></td></tr
><tr id="gr_svn237_336"

><td id="336"><a href="#336">336</a></td></tr
><tr id="gr_svn237_337"

><td id="337"><a href="#337">337</a></td></tr
><tr id="gr_svn237_338"

><td id="338"><a href="#338">338</a></td></tr
><tr id="gr_svn237_339"

><td id="339"><a href="#339">339</a></td></tr
><tr id="gr_svn237_340"

><td id="340"><a href="#340">340</a></td></tr
><tr id="gr_svn237_341"

><td id="341"><a href="#341">341</a></td></tr
><tr id="gr_svn237_342"

><td id="342"><a href="#342">342</a></td></tr
><tr id="gr_svn237_343"

><td id="343"><a href="#343">343</a></td></tr
><tr id="gr_svn237_344"

><td id="344"><a href="#344">344</a></td></tr
><tr id="gr_svn237_345"

><td id="345"><a href="#345">345</a></td></tr
><tr id="gr_svn237_346"

><td id="346"><a href="#346">346</a></td></tr
><tr id="gr_svn237_347"

><td id="347"><a href="#347">347</a></td></tr
><tr id="gr_svn237_348"

><td id="348"><a href="#348">348</a></td></tr
><tr id="gr_svn237_349"

><td id="349"><a href="#349">349</a></td></tr
><tr id="gr_svn237_350"

><td id="350"><a href="#350">350</a></td></tr
><tr id="gr_svn237_351"

><td id="351"><a href="#351">351</a></td></tr
><tr id="gr_svn237_352"

><td id="352"><a href="#352">352</a></td></tr
><tr id="gr_svn237_353"

><td id="353"><a href="#353">353</a></td></tr
><tr id="gr_svn237_354"

><td id="354"><a href="#354">354</a></td></tr
><tr id="gr_svn237_355"

><td id="355"><a href="#355">355</a></td></tr
><tr id="gr_svn237_356"

><td id="356"><a href="#356">356</a></td></tr
><tr id="gr_svn237_357"

><td id="357"><a href="#357">357</a></td></tr
><tr id="gr_svn237_358"

><td id="358"><a href="#358">358</a></td></tr
><tr id="gr_svn237_359"

><td id="359"><a href="#359">359</a></td></tr
><tr id="gr_svn237_360"

><td id="360"><a href="#360">360</a></td></tr
><tr id="gr_svn237_361"

><td id="361"><a href="#361">361</a></td></tr
><tr id="gr_svn237_362"

><td id="362"><a href="#362">362</a></td></tr
><tr id="gr_svn237_363"

><td id="363"><a href="#363">363</a></td></tr
><tr id="gr_svn237_364"

><td id="364"><a href="#364">364</a></td></tr
><tr id="gr_svn237_365"

><td id="365"><a href="#365">365</a></td></tr
><tr id="gr_svn237_366"

><td id="366"><a href="#366">366</a></td></tr
><tr id="gr_svn237_367"

><td id="367"><a href="#367">367</a></td></tr
><tr id="gr_svn237_368"

><td id="368"><a href="#368">368</a></td></tr
><tr id="gr_svn237_369"

><td id="369"><a href="#369">369</a></td></tr
><tr id="gr_svn237_370"

><td id="370"><a href="#370">370</a></td></tr
><tr id="gr_svn237_371"

><td id="371"><a href="#371">371</a></td></tr
><tr id="gr_svn237_372"

><td id="372"><a href="#372">372</a></td></tr
><tr id="gr_svn237_373"

><td id="373"><a href="#373">373</a></td></tr
><tr id="gr_svn237_374"

><td id="374"><a href="#374">374</a></td></tr
><tr id="gr_svn237_375"

><td id="375"><a href="#375">375</a></td></tr
><tr id="gr_svn237_376"

><td id="376"><a href="#376">376</a></td></tr
><tr id="gr_svn237_377"

><td id="377"><a href="#377">377</a></td></tr
><tr id="gr_svn237_378"

><td id="378"><a href="#378">378</a></td></tr
><tr id="gr_svn237_379"

><td id="379"><a href="#379">379</a></td></tr
><tr id="gr_svn237_380"

><td id="380"><a href="#380">380</a></td></tr
><tr id="gr_svn237_381"

><td id="381"><a href="#381">381</a></td></tr
><tr id="gr_svn237_382"

><td id="382"><a href="#382">382</a></td></tr
><tr id="gr_svn237_383"

><td id="383"><a href="#383">383</a></td></tr
><tr id="gr_svn237_384"

><td id="384"><a href="#384">384</a></td></tr
><tr id="gr_svn237_385"

><td id="385"><a href="#385">385</a></td></tr
><tr id="gr_svn237_386"

><td id="386"><a href="#386">386</a></td></tr
><tr id="gr_svn237_387"

><td id="387"><a href="#387">387</a></td></tr
><tr id="gr_svn237_388"

><td id="388"><a href="#388">388</a></td></tr
><tr id="gr_svn237_389"

><td id="389"><a href="#389">389</a></td></tr
><tr id="gr_svn237_390"

><td id="390"><a href="#390">390</a></td></tr
><tr id="gr_svn237_391"

><td id="391"><a href="#391">391</a></td></tr
><tr id="gr_svn237_392"

><td id="392"><a href="#392">392</a></td></tr
><tr id="gr_svn237_393"

><td id="393"><a href="#393">393</a></td></tr
><tr id="gr_svn237_394"

><td id="394"><a href="#394">394</a></td></tr
><tr id="gr_svn237_395"

><td id="395"><a href="#395">395</a></td></tr
><tr id="gr_svn237_396"

><td id="396"><a href="#396">396</a></td></tr
><tr id="gr_svn237_397"

><td id="397"><a href="#397">397</a></td></tr
><tr id="gr_svn237_398"

><td id="398"><a href="#398">398</a></td></tr
><tr id="gr_svn237_399"

><td id="399"><a href="#399">399</a></td></tr
><tr id="gr_svn237_400"

><td id="400"><a href="#400">400</a></td></tr
><tr id="gr_svn237_401"

><td id="401"><a href="#401">401</a></td></tr
><tr id="gr_svn237_402"

><td id="402"><a href="#402">402</a></td></tr
><tr id="gr_svn237_403"

><td id="403"><a href="#403">403</a></td></tr
><tr id="gr_svn237_404"

><td id="404"><a href="#404">404</a></td></tr
><tr id="gr_svn237_405"

><td id="405"><a href="#405">405</a></td></tr
><tr id="gr_svn237_406"

><td id="406"><a href="#406">406</a></td></tr
><tr id="gr_svn237_407"

><td id="407"><a href="#407">407</a></td></tr
><tr id="gr_svn237_408"

><td id="408"><a href="#408">408</a></td></tr
><tr id="gr_svn237_409"

><td id="409"><a href="#409">409</a></td></tr
><tr id="gr_svn237_410"

><td id="410"><a href="#410">410</a></td></tr
><tr id="gr_svn237_411"

><td id="411"><a href="#411">411</a></td></tr
><tr id="gr_svn237_412"

><td id="412"><a href="#412">412</a></td></tr
><tr id="gr_svn237_413"

><td id="413"><a href="#413">413</a></td></tr
><tr id="gr_svn237_414"

><td id="414"><a href="#414">414</a></td></tr
><tr id="gr_svn237_415"

><td id="415"><a href="#415">415</a></td></tr
><tr id="gr_svn237_416"

><td id="416"><a href="#416">416</a></td></tr
><tr id="gr_svn237_417"

><td id="417"><a href="#417">417</a></td></tr
><tr id="gr_svn237_418"

><td id="418"><a href="#418">418</a></td></tr
><tr id="gr_svn237_419"

><td id="419"><a href="#419">419</a></td></tr
><tr id="gr_svn237_420"

><td id="420"><a href="#420">420</a></td></tr
><tr id="gr_svn237_421"

><td id="421"><a href="#421">421</a></td></tr
><tr id="gr_svn237_422"

><td id="422"><a href="#422">422</a></td></tr
><tr id="gr_svn237_423"

><td id="423"><a href="#423">423</a></td></tr
><tr id="gr_svn237_424"

><td id="424"><a href="#424">424</a></td></tr
><tr id="gr_svn237_425"

><td id="425"><a href="#425">425</a></td></tr
><tr id="gr_svn237_426"

><td id="426"><a href="#426">426</a></td></tr
><tr id="gr_svn237_427"

><td id="427"><a href="#427">427</a></td></tr
><tr id="gr_svn237_428"

><td id="428"><a href="#428">428</a></td></tr
><tr id="gr_svn237_429"

><td id="429"><a href="#429">429</a></td></tr
><tr id="gr_svn237_430"

><td id="430"><a href="#430">430</a></td></tr
><tr id="gr_svn237_431"

><td id="431"><a href="#431">431</a></td></tr
><tr id="gr_svn237_432"

><td id="432"><a href="#432">432</a></td></tr
><tr id="gr_svn237_433"

><td id="433"><a href="#433">433</a></td></tr
><tr id="gr_svn237_434"

><td id="434"><a href="#434">434</a></td></tr
><tr id="gr_svn237_435"

><td id="435"><a href="#435">435</a></td></tr
><tr id="gr_svn237_436"

><td id="436"><a href="#436">436</a></td></tr
><tr id="gr_svn237_437"

><td id="437"><a href="#437">437</a></td></tr
><tr id="gr_svn237_438"

><td id="438"><a href="#438">438</a></td></tr
><tr id="gr_svn237_439"

><td id="439"><a href="#439">439</a></td></tr
><tr id="gr_svn237_440"

><td id="440"><a href="#440">440</a></td></tr
><tr id="gr_svn237_441"

><td id="441"><a href="#441">441</a></td></tr
><tr id="gr_svn237_442"

><td id="442"><a href="#442">442</a></td></tr
><tr id="gr_svn237_443"

><td id="443"><a href="#443">443</a></td></tr
><tr id="gr_svn237_444"

><td id="444"><a href="#444">444</a></td></tr
><tr id="gr_svn237_445"

><td id="445"><a href="#445">445</a></td></tr
><tr id="gr_svn237_446"

><td id="446"><a href="#446">446</a></td></tr
><tr id="gr_svn237_447"

><td id="447"><a href="#447">447</a></td></tr
><tr id="gr_svn237_448"

><td id="448"><a href="#448">448</a></td></tr
><tr id="gr_svn237_449"

><td id="449"><a href="#449">449</a></td></tr
><tr id="gr_svn237_450"

><td id="450"><a href="#450">450</a></td></tr
><tr id="gr_svn237_451"

><td id="451"><a href="#451">451</a></td></tr
><tr id="gr_svn237_452"

><td id="452"><a href="#452">452</a></td></tr
><tr id="gr_svn237_453"

><td id="453"><a href="#453">453</a></td></tr
><tr id="gr_svn237_454"

><td id="454"><a href="#454">454</a></td></tr
><tr id="gr_svn237_455"

><td id="455"><a href="#455">455</a></td></tr
><tr id="gr_svn237_456"

><td id="456"><a href="#456">456</a></td></tr
><tr id="gr_svn237_457"

><td id="457"><a href="#457">457</a></td></tr
><tr id="gr_svn237_458"

><td id="458"><a href="#458">458</a></td></tr
><tr id="gr_svn237_459"

><td id="459"><a href="#459">459</a></td></tr
></table></pre>
<pre><table width="100%"><tr class="nocursor"><td></td></tr></table></pre>
</td>
<td id="lines">
<pre><table width="100%"><tr class="cursor_stop cursor_hidden"><td></td></tr></table></pre>
<pre ><table id="src_table_0"><tr
id=sl_svn237_1

><td class="source">vim:shiftwidth=8:foldmethod=indent:autoindent:<br></td></tr
><tr
id=sl_svn237_2

><td class="source"><br></td></tr
><tr
id=sl_svn237_3

><td class="source">. AVM2 规范<br></td></tr
><tr
id=sl_svn237_4

><td class="source">. hproof, 2011.4.3<br></td></tr
><tr
id=sl_svn237_5

><td class="source"><br></td></tr
><tr
id=sl_svn237_6

><td class="source"><br></td></tr
><tr
id=sl_svn237_7

><td class="source">. 1, 介绍<br></td></tr
><tr
id=sl_svn237_8

><td class="source">	. 概念<br></td></tr
><tr
id=sl_svn237_9

><td class="source">		. Virtual Machine		-- 虚拟机<br></td></tr
><tr
id=sl_svn237_10

><td class="source">		. Script			-- 脚本是一系列 特性/初始化方法 的集合, 位于 定义/数据 的顶层.<br></td></tr
><tr
id=sl_svn237_11

><td class="source">		. Bytecode			-- 虚拟机状态中的计算<br></td></tr
><tr
id=sl_svn237_12

><td class="source">		. Scope				-- 作用域, 映射名字到局部, 当没有名字重复时. 范围可以内嵌<br></td></tr
><tr
id=sl_svn237_13

><td class="source">		. Object			-- 对象, 名字属性的集合, 值为 Object|null|undefined<br></td></tr
><tr
id=sl_svn237_14

><td class="source">		. Namespace			-- 命名空间, 用于控制可见性<br></td></tr
><tr
id=sl_svn237_15

><td class="source">		. Class				-- 定义一系列对象集合, 对象由 instantiation 来建立<br></td></tr
><tr
id=sl_svn237_16

><td class="source">		. Inheritance			-- 继承, 类的继承关系<br></td></tr
><tr
id=sl_svn237_17

><td class="source">		. Trait				-- 特性, fixed-name 属性供所有实例共享. 一系列的特性代表了一个对象的类型.<br></td></tr
><tr
id=sl_svn237_18

><td class="source">		. Method			-- 1), 方法体, 包含执行代码. 2), 闭包函数, 拥有建立该闭包函数的环境信息.<br></td></tr
><tr
id=sl_svn237_19

><td class="source">		. Verification			-- 验证, ABC 文件读入到 AVM2 时需要验证, 如果不符合该 AVM2 规范, 则被拒绝.<br></td></tr
><tr
id=sl_svn237_20

><td class="source">		. Just-in-Time (JIT)		-- AVM2 初始化时, 可以把 AVM2 代码编译为本机代码以增加性能.<br></td></tr
><tr
id=sl_svn237_21

><td class="source"><br></td></tr
><tr
id=sl_svn237_22

><td class="source">. 2, AS 虚拟机结构<br></td></tr
><tr
id=sl_svn237_23

><td class="source">	. 常量<br></td></tr
><tr
id=sl_svn237_24

><td class="source">		. int				-- 32 bits<br></td></tr
><tr
id=sl_svn237_25

><td class="source">		. uint				-- 32 bits<br></td></tr
><tr
id=sl_svn237_26

><td class="source">		. double			-- 64 bits<br></td></tr
><tr
id=sl_svn237_27

><td class="source">		. string			-- uni-code, utf-8<br></td></tr
><tr
id=sl_svn237_28

><td class="source">		. namespace			-- 等于一个 URI<br></td></tr
><tr
id=sl_svn237_29

><td class="source">		. null				-- 无对象<br></td></tr
><tr
id=sl_svn237_30

><td class="source">		. undefined			-- 无定义<br></td></tr
><tr
id=sl_svn237_31

><td class="source">	. 虚拟机概述<br></td></tr
><tr
id=sl_svn237_32

><td class="source">		. AVM2 中的计算所基于方法体(method body)内地代码, 及其所在环境(方法信息, 局部数据, 常量池, 堆栈, 运行期环境)<br></td></tr
><tr
id=sl_svn237_33

><td class="source">		. 数据结构在 5 中介绍<br></td></tr
><tr
id=sl_svn237_34

><td class="source">		. 方法内地指令在 5 中介绍. 每个指令可修改虚拟机状态, 或者影响环境(输入/输出)<br></td></tr
><tr
id=sl_svn237_35

><td class="source">		. 方法信息, 表示了方法的使用, 例如默认参数的参数值.<br></td></tr
><tr
id=sl_svn237_36

><td class="source">		. 局部数据, 基于作用域堆栈/作用域堆栈/局部寄存器<br></td></tr
><tr
id=sl_svn237_37

><td class="source">			. 操作数堆栈, 堆栈顶地址为0, 然后为1等.<br></td></tr
><tr
id=sl_svn237_38

><td class="source">			. 作用域堆栈, 用于名字查找.<br></td></tr
><tr
id=sl_svn237_39

><td class="source">			. 局部寄存器, 保存 局部参数, 局部变量, 临时变量<br></td></tr
><tr
id=sl_svn237_40

><td class="source">		. 常量池<br></td></tr
><tr
id=sl_svn237_41

><td class="source">		. AVM2 指令可运行时间里对象, 它们位于堆中. 仅当建立了对象后才可以访问堆, 它们会被自动回收.<br></td></tr
><tr
id=sl_svn237_42

><td class="source">		. 运行环境, 逻辑上类似一系列对象, 名字范围查找, 由内部向外部进行.<br></td></tr
><tr
id=sl_svn237_43

><td class="source">		. 闭包函数, 建立时会捕获当前的环境信息, 当其被执行时, 环境被复原.<br></td></tr
><tr
id=sl_svn237_44

><td class="source">	. 名字<br></td></tr
><tr
id=sl_svn237_45

><td class="source">		. 复合名字(Multiname)<br></td></tr
><tr
id=sl_svn237_46

><td class="source">			. 复合名字(Multiname) = 一般名字 + 名字空间<br></td></tr
><tr
id=sl_svn237_47

><td class="source">			. 复合名字项(Multiname entries) 包含 名字索引 和 名字空间(索引)<br></td></tr
><tr
id=sl_svn237_48

><td class="source">		. 限定名(QName)<br></td></tr
><tr
id=sl_svn237_49

><td class="source">			. 最简单的复合名字<br></td></tr
><tr
id=sl_svn237_50

><td class="source">			. 由 名字空间索引 + 名字索引 构成. 分别应用 string constant pool 和 namespace constant pool<br></td></tr
><tr
id=sl_svn237_51

><td class="source">			. 例子<br></td></tr
><tr
id=sl_svn237_52

><td class="source">				public var s : String;<br></td></tr
><tr
id=sl_svn237_53

><td class="source">				其中包含2个 QName 定义:<br></td></tr
><tr
id=sl_svn237_54

><td class="source">					. 变量 s	: public 名字空间 + &quot;s&quot; 名字<br></td></tr
><tr
id=sl_svn237_55

><td class="source">					. 类型 String	: public 名字空间 + &quot;String&quot; 名字<br></td></tr
><tr
id=sl_svn237_56

><td class="source">		. 运行期限定名(RTQName)<br></td></tr
><tr
id=sl_svn237_57

><td class="source">			. 名字空间 在运行期确定<br></td></tr
><tr
id=sl_svn237_58

><td class="source">			. 由 名字索引 构成. 代码范围时, 需要有一个名字空间在当前堆栈中(顶层值)<br></td></tr
><tr
id=sl_svn237_59

><td class="source">			. 例如<br></td></tr
><tr
id=sl_svn237_60

><td class="source">				var ns = getANamespace();<br></td></tr
><tr
id=sl_svn237_61

><td class="source">				x = ns::r;<br></td></tr
><tr
id=sl_svn237_62

><td class="source">				其中 &quot;ns::r&quot; 包含一个 RTQName 定义: 名字 &quot;r&quot;, 代码会把 &quot;ns&quot; 的名字空间放置于顶层栈中<br></td></tr
><tr
id=sl_svn237_63

><td class="source">		. 延时运行期限定名(RTQNameL)<br></td></tr
><tr
id=sl_svn237_64

><td class="source">			. 命名空间 和 名字 都是运行期确定,  执行时 名字/名字空间 位于栈顶, 其类型必须是 String/Namespace 类型<br></td></tr
><tr
id=sl_svn237_65

><td class="source">			. 例如<br></td></tr
><tr
id=sl_svn237_66

><td class="source">				var x = getAName();<br></td></tr
><tr
id=sl_svn237_67

><td class="source">				var ns = getANamespace();<br></td></tr
><tr
id=sl_svn237_68

><td class="source">				w = ns::[x];<br></td></tr
><tr
id=sl_svn237_69

><td class="source">				会为 &quot;ns::[x]&quot; 建立一个 RTQNameL, 放置于栈顶.<br></td></tr
><tr
id=sl_svn237_70

><td class="source">		. 多名字空间命名(Multiname - Multiple Namespace Name)<br></td></tr
><tr
id=sl_svn237_71

><td class="source">			. 由 名字索引 + 名字空间集索引 构成. 名字常量池, 名字空间集常量池<br></td></tr
><tr
id=sl_svn237_72

><td class="source">			. 例如<br></td></tr
><tr
id=sl_svn237_73

><td class="source">				use namespace t;<br></td></tr
><tr
id=sl_svn237_74

><td class="source">				trace(f);<br></td></tr
><tr
id=sl_svn237_75

><td class="source">				包含 名字索引(f) 和名字空间集索引(当前的空间环境: 公共名字空间, 专有名字空间t, 和已经打开的其它私有/内部名字空间)<br></td></tr
><tr
id=sl_svn237_76

><td class="source">		. 延时多名字空间命名(MultinameL)<br></td></tr
><tr
id=sl_svn237_77

><td class="source">			. 由 名字空间集索引 构成<br></td></tr
><tr
id=sl_svn237_78

><td class="source">			. 例如<br></td></tr
><tr
id=sl_svn237_79

><td class="source">				use namespace t;<br></td></tr
><tr
id=sl_svn237_80

><td class="source">				trace(o[x]);<br></td></tr
><tr
id=sl_svn237_81

><td class="source">				包含 名字空间集索引, 执行时, 入栈 x , 然后根据 x 以及 名字空间集 来确定.<br></td></tr
><tr
id=sl_svn237_82

><td class="source">		. 解析复合名字<br></td></tr
><tr
id=sl_svn237_83

><td class="source">			. 搜索顺序, 依赖于对象的定义, 动态属性, 和 原型链.<br></td></tr
><tr
id=sl_svn237_84

><td class="source">			. 动态属性/原型链 仅在 公共名字空间中搜索.<br></td></tr
><tr
id=sl_svn237_85

><td class="source">			. 在 名字空间集 中如果找到多个定义, 会产生 TypeError 错误.<br></td></tr
><tr
id=sl_svn237_86

><td class="source">	. 方法调用说明<br></td></tr
><tr
id=sl_svn237_87

><td class="source">		. 第一个参数始终为 this<br></td></tr
><tr
id=sl_svn237_88

><td class="source">		. 闭包类型<br></td></tr
><tr
id=sl_svn237_89

><td class="source">			. 函数闭包<br></td></tr
><tr
id=sl_svn237_90

><td class="source">				function f(){}<br></td></tr
><tr
id=sl_svn237_91

><td class="source">				var a = f; 			-- a is a function closure<br></td></tr
><tr
id=sl_svn237_92

><td class="source">			. 方法闭包<br></td></tr
><tr
id=sl_svn237_93

><td class="source">				class C{<br></td></tr
><tr
id=sl_svn237_94

><td class="source">				function m(){}<br></td></tr
><tr
id=sl_svn237_95

><td class="source">				}<br></td></tr
><tr
id=sl_svn237_96

><td class="source">				var q = new C();<br></td></tr
><tr
id=sl_svn237_97

><td class="source">				var a = q.m;			-- a is a method closure<br></td></tr
><tr
id=sl_svn237_98

><td class="source">		. call 规则<br></td></tr
><tr
id=sl_svn237_99

><td class="source">			. 函数闭包<br></td></tr
><tr
id=sl_svn237_100

><td class="source">				. call 的第一个参数作为函数内的 this, 如果为空, 则用 [object global] 来代替<br></td></tr
><tr
id=sl_svn237_101

><td class="source">			. 方法闭包<br></td></tr
><tr
id=sl_svn237_102

><td class="source">				. call 的第一个参数被忽略, 使用原始的 this<br></td></tr
><tr
id=sl_svn237_103

><td class="source">	. 指令集概述<br></td></tr
><tr
id=sl_svn237_104

><td class="source">		. 后缀规范<br></td></tr
><tr
id=sl_svn237_105

><td class="source">			_b (Boolean), _a (any), _i (int), _d (double), _s (string), _u (unsigned), _o (object)<br></td></tr
><tr
id=sl_svn237_106

><td class="source">		. 加载/储存 指令<br></td></tr
><tr
id=sl_svn237_107

><td class="source">			. 包含<br></td></tr
><tr
id=sl_svn237_108

><td class="source">				getlocal, getlocal0, getlocal1, getlocal2, getlocal3, <br></td></tr
><tr
id=sl_svn237_109

><td class="source">				setlocal, setlocal0, setlocal1, setlocal2, setlocal3.<br></td></tr
><tr
id=sl_svn237_110

><td class="source">		. 算法指令<br></td></tr
><tr
id=sl_svn237_111

><td class="source">			. 执行指令, 从操作数堆栈中获取数据, 并保存结果到堆栈.<br></td></tr
><tr
id=sl_svn237_112

><td class="source">			. 加法<br></td></tr
><tr
id=sl_svn237_113

><td class="source">				increment, increment_i <br></td></tr
><tr
id=sl_svn237_114

><td class="source">				inclocal, inclocal_i <br></td></tr
><tr
id=sl_svn237_115

><td class="source">				add, add_i<br></td></tr
><tr
id=sl_svn237_116

><td class="source">			. 减法<br></td></tr
><tr
id=sl_svn237_117

><td class="source">				decrement, decrement_i<br></td></tr
><tr
id=sl_svn237_118

><td class="source">				declocal, declocal_i<br></td></tr
><tr
id=sl_svn237_119

><td class="source">				subtract, subtract_i<br></td></tr
><tr
id=sl_svn237_120

><td class="source">			. 乘除<br></td></tr
><tr
id=sl_svn237_121

><td class="source">				multiply, multiply_i<br></td></tr
><tr
id=sl_svn237_122

><td class="source">				divide, modulo<br></td></tr
><tr
id=sl_svn237_123

><td class="source">			. 负数<br></td></tr
><tr
id=sl_svn237_124

><td class="source">				negate, negate_i<br></td></tr
><tr
id=sl_svn237_125

><td class="source">			. 逻辑<br></td></tr
><tr
id=sl_svn237_126

><td class="source">				equals, strictequals<br></td></tr
><tr
id=sl_svn237_127

><td class="source">				lessthan, lessequals, greaterthan, greaterequals<br></td></tr
><tr
id=sl_svn237_128

><td class="source">				istype, istypelate<br></td></tr
><tr
id=sl_svn237_129

><td class="source">				in<br></td></tr
><tr
id=sl_svn237_130

><td class="source">		. 位指令<br></td></tr
><tr
id=sl_svn237_131

><td class="source">			. 包含<br></td></tr
><tr
id=sl_svn237_132

><td class="source">				bitnot, bitand, bitor, bitxor<br></td></tr
><tr
id=sl_svn237_133

><td class="source">				lshift, rshift, urshift<br></td></tr
><tr
id=sl_svn237_134

><td class="source">			. 如果必要, 转换为 int 类型<br></td></tr
><tr
id=sl_svn237_135

><td class="source">		. 类型转换<br></td></tr
><tr
id=sl_svn237_136

><td class="source">			. 包含<br></td></tr
><tr
id=sl_svn237_137

><td class="source">				coerce, convert_b, coerce_a, convert_i, convert_d, coerce_s<br></td></tr
><tr
id=sl_svn237_138

><td class="source">				convert_s, convert_u, convert_o<br></td></tr
><tr
id=sl_svn237_139

><td class="source">		. 对象操作<br></td></tr
><tr
id=sl_svn237_140

><td class="source">			. 建立包含<br></td></tr
><tr
id=sl_svn237_141

><td class="source">				newclass, newobject, newarray, newactivation<br></td></tr
><tr
id=sl_svn237_142

><td class="source">			. 构造包含<br></td></tr
><tr
id=sl_svn237_143

><td class="source">				construct, constructsuper, constructprop<br></td></tr
><tr
id=sl_svn237_144

><td class="source">			. 名字空间<br></td></tr
><tr
id=sl_svn237_145

><td class="source">				dxns, dxnslate<br></td></tr
><tr
id=sl_svn237_146

><td class="source">		. 堆栈操作<br></td></tr
><tr
id=sl_svn237_147

><td class="source">			. 入栈<br></td></tr
><tr
id=sl_svn237_148

><td class="source">				pushnull, pushundefined, pushtrue, pushfalse, pushnan<br></td></tr
><tr
id=sl_svn237_149

><td class="source">				pushbyte, pushshort, pushstring, pushint, pushdouble<br></td></tr
><tr
id=sl_svn237_150

><td class="source">				pushscope, pushnamespace<br></td></tr
><tr
id=sl_svn237_151

><td class="source">			. 其它<br></td></tr
><tr
id=sl_svn237_152

><td class="source">				pop				-- 出栈<br></td></tr
><tr
id=sl_svn237_153

><td class="source">				dup				-- 复制栈顶<br></td></tr
><tr
id=sl_svn237_154

><td class="source">				swap				-- 交换栈顶2个元素<br></td></tr
><tr
id=sl_svn237_155

><td class="source">		. 控制指令<br></td></tr
><tr
id=sl_svn237_156

><td class="source">			. 条件转移<br></td></tr
><tr
id=sl_svn237_157

><td class="source">				iflt, ifle, ifnlt, ifnle, ifgt, ifge, ifngt, ifnge, ifeq, ifne, ifstricteq, ifstrictne, iftrue, iffalse<br></td></tr
><tr
id=sl_svn237_158

><td class="source">				. 会包含必要的 类型转换<br></td></tr
><tr
id=sl_svn237_159

><td class="source">			. 标号<br></td></tr
><tr
id=sl_svn237_160

><td class="source">				label<br></td></tr
><tr
id=sl_svn237_161

><td class="source">			. 其它<br></td></tr
><tr
id=sl_svn237_162

><td class="source">				lookupswitch			-- 编码紧凑的条件表达式<br></td></tr
><tr
id=sl_svn237_163

><td class="source">		. 函数调用和返回<br></td></tr
><tr
id=sl_svn237_164

><td class="source">			. 包含<br></td></tr
><tr
id=sl_svn237_165

><td class="source">				call				-- 等同于 Function.prototype.call<br></td></tr
><tr
id=sl_svn237_166

><td class="source">				callmethod			-- 调用实例方法<br></td></tr
><tr
id=sl_svn237_167

><td class="source">				callstatic			-- 调用静态方法<br></td></tr
><tr
id=sl_svn237_168

><td class="source">				callsuper/callsupervoid		-- 父类的方法<br></td></tr
><tr
id=sl_svn237_169

><td class="source">				callproperty/callpropvoid<br></td></tr
><tr
id=sl_svn237_170

><td class="source">				callproplex<br></td></tr
><tr
id=sl_svn237_171

><td class="source">		. 异常<br></td></tr
><tr
id=sl_svn237_172

><td class="source">			. 包含<br></td></tr
><tr
id=sl_svn237_173

><td class="source">				throw<br></td></tr
><tr
id=sl_svn237_174

><td class="source">		. 调试<br></td></tr
><tr
id=sl_svn237_175

><td class="source">			. 包含<br></td></tr
><tr
id=sl_svn237_176

><td class="source">				debugfile<br></td></tr
><tr
id=sl_svn237_177

><td class="source">				debugline<br></td></tr
><tr
id=sl_svn237_178

><td class="source"><br></td></tr
><tr
id=sl_svn237_179

><td class="source">. 3, 加载/链接/验证/执行<br></td></tr
><tr
id=sl_svn237_180

><td class="source">	. 概述<br></td></tr
><tr
id=sl_svn237_181

><td class="source">		. 加载/执行 中会交错进行连接操作<br></td></tr
><tr
id=sl_svn237_182

><td class="source">	. 加载/链接<br></td></tr
><tr
id=sl_svn237_183

><td class="source">		. 每个 ABC 文件被加载并解码<br></td></tr
><tr
id=sl_svn237_184

><td class="source">		. 建立对象/脚本的 特性(Trait)<br></td></tr
><tr
id=sl_svn237_185

><td class="source">		. 父类/子类  关系被确定<br></td></tr
><tr
id=sl_svn237_186

><td class="source">		. 常量表被建立, 以及对其的引用被解析<br></td></tr
><tr
id=sl_svn237_187

><td class="source">		. 方法体 和 方法信息 被链接在一起<br></td></tr
><tr
id=sl_svn237_188

><td class="source">	. 执行<br></td></tr
><tr
id=sl_svn237_189

><td class="source">		. 程序调用和退出<br></td></tr
><tr
id=sl_svn237_190

><td class="source">			. 数组(entries) script_info <br></td></tr
><tr
id=sl_svn237_191

><td class="source">				. 脚本的初始化方法<br></td></tr
><tr
id=sl_svn237_192

><td class="source">				. 脚本环境的特性集合<br></td></tr
><tr
id=sl_svn237_193

><td class="source">				. 最后一个项目的初始化方法, 包含该 ABC 文件的第一个字节代码, 作为该脚本的入口函数.<br></td></tr
><tr
id=sl_svn237_194

><td class="source">			. 其它初始化方法, 在需要的时候被调用<br></td></tr
><tr
id=sl_svn237_195

><td class="source">		. 对象初始化<br></td></tr
><tr
id=sl_svn237_196

><td class="source">			. class_info 中的 newclass 被执行时, 类静态初始化方法被调用<br></td></tr
><tr
id=sl_svn237_197

><td class="source">		. 方法项目<br></td></tr
><tr
id=sl_svn237_198

><td class="source">			. 方法被执行时, 它的执行环境被设置.<br></td></tr
><tr
id=sl_svn237_199

><td class="source">			. 3个数据被建立<br></td></tr
><tr
id=sl_svn237_200

><td class="source">				. 操作数堆栈<br></td></tr
><tr
id=sl_svn237_201

><td class="source">					. 初始为空, 最大容量 method_body_info.max_stack<br></td></tr
><tr
id=sl_svn237_202

><td class="source">				. 作用域堆栈<br></td></tr
><tr
id=sl_svn237_203

><td class="source">					. 初始为空, 最大容量 method_body_info.max_scope_stack<br></td></tr
><tr
id=sl_svn237_204

><td class="source">					. OP_pushscope, OP_pushwith, OP_popscope<br></td></tr
><tr
id=sl_svn237_205

><td class="source">				. 局部变量堆栈<br></td></tr
><tr
id=sl_svn237_206

><td class="source">					. 参数/局部/临时 变量<br></td></tr
><tr
id=sl_svn237_207

><td class="source">					. 个数 method_body_info.local_count<br></td></tr
><tr
id=sl_svn237_208

><td class="source">					. Register[0]					-- this, 总是非 null<br></td></tr
><tr
id=sl_svn237_209

><td class="source">					. Registers[1..method_info.param_count]		-- 固定数量的参数, 如果提供的参数过少, 则用参数默认值<br></td></tr
><tr
id=sl_svn237_210

><td class="source">					. method_info.flags<br></td></tr
><tr
id=sl_svn237_211

><td class="source">					. NEED_REST		-- 可变参数个数, Registers[method_info.param_count+1] 中保存了剩余参数<br></td></tr
><tr
id=sl_svn237_212

><td class="source">						. NEED_ARGUMENTS	-- arguments” 对象位于 Registers[method_info.param_count+1] <br></td></tr
><tr
id=sl_svn237_213

><td class="source">		. 执行<br></td></tr
><tr
id=sl_svn237_214

><td class="source">			. 从 method_body_info 的第一个指令开始执行, 地址为0<br></td></tr
><tr
id=sl_svn237_215

><td class="source">			. 指令格式: 操作码, 操作数, 操作数...<br></td></tr
><tr
id=sl_svn237_216

><td class="source">			. 转移分支<br></td></tr
><tr
id=sl_svn237_217

><td class="source">				. 带符号的地址偏移量<br></td></tr
><tr
id=sl_svn237_218

><td class="source">				. 参照于 下一个指令的地址<br></td></tr
><tr
id=sl_svn237_219

><td class="source">		. 调用/返回<br></td></tr
><tr
id=sl_svn237_220

><td class="source">			. 但 call 被调用是, 局部环境被建立. 被调用者无法访问调用者的局部环境. <br></td></tr
><tr
id=sl_svn237_221

><td class="source">		. 异常捕获<br></td></tr
><tr
id=sl_svn237_222

><td class="source">	. 验证<br></td></tr
><tr
id=sl_svn237_223

><td class="source">		. 规则<br></td></tr
><tr
id=sl_svn237_224

><td class="source">			. u30 的非0比特数不得超过30个<br></td></tr
><tr
id=sl_svn237_225

><td class="source">			. (略)<br></td></tr
><tr
id=sl_svn237_226

><td class="source"><br></td></tr
><tr
id=sl_svn237_227

><td class="source">. 4, 字节码(abc)格式<br></td></tr
><tr
id=sl_svn237_228

><td class="source">	. 概述<br></td></tr
><tr
id=sl_svn237_229

><td class="source">		. abcFile<br></td></tr
><tr
id=sl_svn237_230

><td class="source">			. 加载/执行 的单元<br></td></tr
><tr
id=sl_svn237_231

><td class="source">			. 包含 原始数据, 结构数据, 数组. 结构中的字段没有填充和对齐.<br></td></tr
><tr
id=sl_svn237_232

><td class="source">	. 原始数据类型, <br></td></tr
><tr
id=sl_svn237_233

><td class="source">		. 多字节时, 以 little-endian 储存, 负数用二进制补码.<br></td></tr
><tr
id=sl_svn237_234

><td class="source">		. 包含<br></td></tr
><tr
id=sl_svn237_235

><td class="source">			. u8				1 字节<br></td></tr
><tr
id=sl_svn237_236

><td class="source">			. u16				2 字节<br></td></tr
><tr
id=sl_svn237_237

><td class="source">			. s24				3 字节<br></td></tr
><tr
id=sl_svn237_238

><td class="source">			. u30				? 字节<br></td></tr
><tr
id=sl_svn237_239

><td class="source">			. u32/s32			? 字节<br></td></tr
><tr
id=sl_svn237_240

><td class="source">			. d64				8 字节<br></td></tr
><tr
id=sl_svn237_241

><td class="source">		. 变长类型<br></td></tr
><tr
id=sl_svn237_242

><td class="source">			. u30/u32/s32 的长度, 占用 1-5 字节. <br></td></tr
><tr
id=sl_svn237_243

><td class="source">			. 1-7比特代表值, 8比特为标志, 如果为1, 表示下一字节也属于本数据.<br></td></tr
><tr
id=sl_svn237_244

><td class="source">	. abcFile 结构<br></td></tr
><tr
id=sl_svn237_245

><td class="source">		. abcFile 结构<br></td></tr
><tr
id=sl_svn237_246

><td class="source">			u16 			minor_version				-- 46<br></td></tr
><tr
id=sl_svn237_247

><td class="source">			u16 			major_version				-- 16<br></td></tr
><tr
id=sl_svn237_248

><td class="source">			cpool_info 		constant_pool				-- 整形/浮点/字符串/名字空间/名字空间集/复合名字<br></td></tr
><tr
id=sl_svn237_249

><td class="source">			u30 			method_count<br></td></tr
><tr
id=sl_svn237_250

><td class="source">			method_info 		method		[method_count]		-- 函数体另外定义, 某些本机函数无函数体<br></td></tr
><tr
id=sl_svn237_251

><td class="source">			u30 			metadata_count<br></td></tr
><tr
id=sl_svn237_252

><td class="source">			metadata_info 		metadata	[metadata_count]<br></td></tr
><tr
id=sl_svn237_253

><td class="source">			u30 			class_count<br></td></tr
><tr
id=sl_svn237_254

><td class="source">			instance_info 		instance	[class_count]		-- 特性定义<br></td></tr
><tr
id=sl_svn237_255

><td class="source">			class_info 		class		[class_count]<br></td></tr
><tr
id=sl_svn237_256

><td class="source">			u30 			script_count<br></td></tr
><tr
id=sl_svn237_257

><td class="source">			script_info 		script		[script_count]		-- 脚本特性. 最后一个指向 abcFile 本身<br></td></tr
><tr
id=sl_svn237_258

><td class="source">			u30 			method_body_count<br></td></tr
><tr
id=sl_svn237_259

><td class="source">			method_body_info 	method_body	[method_body_count]	-- 函数体<br></td></tr
><tr
id=sl_svn237_260

><td class="source"><br></td></tr
><tr
id=sl_svn237_261

><td class="source">	. 常量池(Constant pool)<br></td></tr
><tr
id=sl_svn237_262

><td class="source">		. cpool_info 结构<br></td></tr
><tr
id=sl_svn237_263

><td class="source">			u30 			int_count<br></td></tr
><tr
id=sl_svn237_264

><td class="source">			s32 			integer		[int_count]<br></td></tr
><tr
id=sl_svn237_265

><td class="source">			u30 			uint_count<br></td></tr
><tr
id=sl_svn237_266

><td class="source">			u32 			uinteger	[uint_count]<br></td></tr
><tr
id=sl_svn237_267

><td class="source">			u30 			double_count<br></td></tr
><tr
id=sl_svn237_268

><td class="source">			d64 			double		[double_count]<br></td></tr
><tr
id=sl_svn237_269

><td class="source">			u30 			string_count<br></td></tr
><tr
id=sl_svn237_270

><td class="source">			string_info 		string		[string_count]<br></td></tr
><tr
id=sl_svn237_271

><td class="source">			u30 			namespace_count<br></td></tr
><tr
id=sl_svn237_272

><td class="source">			namespace_info 		namespace	[namespace_count]<br></td></tr
><tr
id=sl_svn237_273

><td class="source">			u30 			ns_set_count<br></td></tr
><tr
id=sl_svn237_274

><td class="source">			ns_set_info 		ns_set		[ns_set_count]<br></td></tr
><tr
id=sl_svn237_275

><td class="source">			u30 			multiname_count<br></td></tr
><tr
id=sl_svn237_276

><td class="source">			multiname_info 		multiname	[multiname_count]<br></td></tr
><tr
id=sl_svn237_277

><td class="source">			// 说明, xxx_count 为数组长度 + 1. [0] 表示默认, 不被包含在数组中<br></td></tr
><tr
id=sl_svn237_278

><td class="source">	. 字符串<br></td></tr
><tr
id=sl_svn237_279

><td class="source">		. string_info 结构<br></td></tr
><tr
id=sl_svn237_280

><td class="source">			u30 			size<br></td></tr
><tr
id=sl_svn237_281

><td class="source">			u8 			utf8		[size]<br></td></tr
><tr
id=sl_svn237_282

><td class="source">	. 名字空间<br></td></tr
><tr
id=sl_svn237_283

><td class="source">		. namespace_info 结构<br></td></tr
><tr
id=sl_svn237_284

><td class="source">			u8 			kind					-- 类型<br></td></tr
><tr
id=sl_svn237_285

><td class="source">			u30 			name					-- 字符串常量池索引号, 0表示空(默认)<br></td></tr
><tr
id=sl_svn237_286

><td class="source">		. kind 类型<br></td></tr
><tr
id=sl_svn237_287

><td class="source">			CONSTANT_Namespace 		0x08<br></td></tr
><tr
id=sl_svn237_288

><td class="source">			CONSTANT_PackageNamespace 	0x16<br></td></tr
><tr
id=sl_svn237_289

><td class="source">			CONSTANT_PackageInternalNs 	0x17<br></td></tr
><tr
id=sl_svn237_290

><td class="source">			CONSTANT_ProtectedNamespace 	0x18<br></td></tr
><tr
id=sl_svn237_291

><td class="source">			CONSTANT_ExplicitNamespace 	0x19<br></td></tr
><tr
id=sl_svn237_292

><td class="source">			CONSTANT_StaticProtectedNs 	0x1A<br></td></tr
><tr
id=sl_svn237_293

><td class="source">			CONSTANT_PrivateNs 		0x05<br></td></tr
><tr
id=sl_svn237_294

><td class="source">	. 名字空间集<br></td></tr
><tr
id=sl_svn237_295

><td class="source">		. ns_set_info 结构<br></td></tr
><tr
id=sl_svn237_296

><td class="source">			u30 			count<br></td></tr
><tr
id=sl_svn237_297

><td class="source">			u30 			ns		[count]			-- 名字空间常量池中索引, 非0<br></td></tr
><tr
id=sl_svn237_298

><td class="source">	. 复合名字<br></td></tr
><tr
id=sl_svn237_299

><td class="source">		. multiname_info 结构<br></td></tr
><tr
id=sl_svn237_300

><td class="source">			u8 			kind<br></td></tr
><tr
id=sl_svn237_301

><td class="source">			u8 			data		[]<br></td></tr
><tr
id=sl_svn237_302

><td class="source">		. kind 类型<br></td></tr
><tr
id=sl_svn237_303

><td class="source">			CONSTANT_QName 			0x07<br></td></tr
><tr
id=sl_svn237_304

><td class="source">			CONSTANT_QNameA 		0x0D<br></td></tr
><tr
id=sl_svn237_305

><td class="source">			CONSTANT_RTQName 		0x0F<br></td></tr
><tr
id=sl_svn237_306

><td class="source">			CONSTANT_RTQNameA 		0x10<br></td></tr
><tr
id=sl_svn237_307

><td class="source">			CONSTANT_RTQNameL 		0x11<br></td></tr
><tr
id=sl_svn237_308

><td class="source">			CONSTANT_RTQNameLA 		0x12<br></td></tr
><tr
id=sl_svn237_309

><td class="source">			CONSTANT_Multiname 		0x09<br></td></tr
><tr
id=sl_svn237_310

><td class="source">			CONSTANT_MultinameA 		0x0E<br></td></tr
><tr
id=sl_svn237_311

><td class="source">			CONSTANT_MultinameL 		0x1B<br></td></tr
><tr
id=sl_svn237_312

><td class="source">			CONSTANT_MultinameLA 		0x1C<br></td></tr
><tr
id=sl_svn237_313

><td class="source">		. multiname_kind_QName <br></td></tr
><tr
id=sl_svn237_314

><td class="source">			u30 			ns					-- 名字空间常量池索引, 0=&quot;*&quot;<br></td></tr
><tr
id=sl_svn237_315

><td class="source">			u30 			name					-- 字符串常量池索引, 0=&quot;*&quot;<br></td></tr
><tr
id=sl_svn237_316

><td class="source">		. multiname_kind_RTQName<br></td></tr
><tr
id=sl_svn237_317

><td class="source">			u30 			name					-- 同上<br></td></tr
><tr
id=sl_svn237_318

><td class="source">		. multiname_kind_RTQName<br></td></tr
><tr
id=sl_svn237_319

><td class="source">			(empty)<br></td></tr
><tr
id=sl_svn237_320

><td class="source">		. multiname_kind_Multiname<br></td></tr
><tr
id=sl_svn237_321

><td class="source">			u30 			name					-- 同上<br></td></tr
><tr
id=sl_svn237_322

><td class="source">			u30 			ns_set					-- 同上, 非0<br></td></tr
><tr
id=sl_svn237_323

><td class="source">			<br></td></tr
><tr
id=sl_svn237_324

><td class="source">		. multiname_kind_MultinameL<br></td></tr
><tr
id=sl_svn237_325

><td class="source">			u30 			ns_set					-- 同上<br></td></tr
><tr
id=sl_svn237_326

><td class="source"><br></td></tr
><tr
id=sl_svn237_327

><td class="source">	. 方法<br></td></tr
><tr
id=sl_svn237_328

><td class="source">		. method_info 结构<br></td></tr
><tr
id=sl_svn237_329

><td class="source">			u30 			param_count<br></td></tr
><tr
id=sl_svn237_330

><td class="source">			u30 			return_type				-- 常量池中 multiname 索引号, 0=&quot;*&quot;<br></td></tr
><tr
id=sl_svn237_331

><td class="source">			u30 			param_type	[param_count]		-- 常量池中 multiname 索引号, 0=&quot;*&quot;<br></td></tr
><tr
id=sl_svn237_332

><td class="source">			u30 			name					-- 常量池中 string 索引号, 0=无名字<br></td></tr
><tr
id=sl_svn237_333

><td class="source">			u8 			flags<br></td></tr
><tr
id=sl_svn237_334

><td class="source">			option_info 		options					-- 当 HAS_OPTIONAL 设置时<br></td></tr
><tr
id=sl_svn237_335

><td class="source">			param_info 		param_names				-- 当 HAS_PARAM_NAMES 设置时<br></td></tr
><tr
id=sl_svn237_336

><td class="source">		. flags 含义<br></td></tr
><tr
id=sl_svn237_337

><td class="source">			NEED_ARGUMENTS 		0x01 	Suggests to the run-time that an “arguments” object (as specified by the ActionScript 3.0 Language Reference) be created. Must not be used together with NEED_REST. See Chapter 3.<br></td></tr
><tr
id=sl_svn237_338

><td class="source">			NEED_ACTIVATION 	0x02 	Must be set if this method uses the newactivation opcode.<br></td></tr
><tr
id=sl_svn237_339

><td class="source">			NEED_REST 		0x04 	This flag creates an ActionScript 3.0 rest arguments array. Must not be used with NEED_ARGUMENTS. See Chapter 3.<br></td></tr
><tr
id=sl_svn237_340

><td class="source">			HAS_OPTIONAL 		0x08 	Must be set if this method has optional parameters and the options field is present in this method_info structure.<br></td></tr
><tr
id=sl_svn237_341

><td class="source">			SET_DXNS 		0x40 	Must be set if this method uses the dxns or dxnslate opcodes.<br></td></tr
><tr
id=sl_svn237_342

><td class="source">			HAS_PARAM_NAMES 	0x80 	Must be set when the param_names field is present in this method_info structure.<br></td></tr
><tr
id=sl_svn237_343

><td class="source">		. option_info 结构<br></td></tr
><tr
id=sl_svn237_344

><td class="source">			u30 			option_count<br></td></tr
><tr
id=sl_svn237_345

><td class="source">			option_detail 		option		[option_count]<br></td></tr
><tr
id=sl_svn237_346

><td class="source">		. option_detail<br></td></tr
><tr
id=sl_svn237_347

><td class="source">			u30 			val					-- 常量池索引号, 具体引用哪个常量表, 由 kind 决定<br></td></tr
><tr
id=sl_svn237_348

><td class="source">			u8 			kind					-- 类型<br></td></tr
><tr
id=sl_svn237_349

><td class="source">		. option_detail.kind 类型<br></td></tr
><tr
id=sl_svn237_350

><td class="source">			CONSTANT_Int 			0x03 	integer<br></td></tr
><tr
id=sl_svn237_351

><td class="source">			CONSTANT_UInt 			0x04 	uinteger<br></td></tr
><tr
id=sl_svn237_352

><td class="source">			CONSTANT_Double 		0x06 	double<br></td></tr
><tr
id=sl_svn237_353

><td class="source">			CONSTANT_Utf8 			0x01 	string<br></td></tr
><tr
id=sl_svn237_354

><td class="source">			CONSTANT_True 			0x0B 	-<br></td></tr
><tr
id=sl_svn237_355

><td class="source">			CONSTANT_False 			0x0A 	-<br></td></tr
><tr
id=sl_svn237_356

><td class="source">			CONSTANT_Null 			0x0C 	-<br></td></tr
><tr
id=sl_svn237_357

><td class="source">			CONSTANT_Undefined 		0x00 	-<br></td></tr
><tr
id=sl_svn237_358

><td class="source">			CONSTANT_Namespace 		0x08 	namespace<br></td></tr
><tr
id=sl_svn237_359

><td class="source">			CONSTANT_PackageNamespace 	0x16 	namespace<br></td></tr
><tr
id=sl_svn237_360

><td class="source">			CONSTANT_PackageInternalNs 	0x17 	Namespace<br></td></tr
><tr
id=sl_svn237_361

><td class="source">			CONSTANT_ProtectedNamespace 	0x18 	Namespace<br></td></tr
><tr
id=sl_svn237_362

><td class="source">			CONSTANT_ExplicitNamespace 	0x19 	Namespace<br></td></tr
><tr
id=sl_svn237_363

><td class="source">			CONSTANT_StaticProtectedNs 	0x1A 	Namespace<br></td></tr
><tr
id=sl_svn237_364

><td class="source">			CONSTANT_PrivateNs 		0x05 	namespace<br></td></tr
><tr
id=sl_svn237_365

><td class="source">		. param_info 结构<br></td></tr
><tr
id=sl_svn237_366

><td class="source">			u30 			param_name	[param_count]		-- 常量池中 string 索引号<br></td></tr
><tr
id=sl_svn237_367

><td class="source">		. metadata_info 结构<br></td></tr
><tr
id=sl_svn237_368

><td class="source">			// 包含嵌入到任意的 键-值 对, AVM2 忽略这些数据<br></td></tr
><tr
id=sl_svn237_369

><td class="source">			u30 			name					-- 常量池中 string 索引号, 非0<br></td></tr
><tr
id=sl_svn237_370

><td class="source">			u30 			item_count<br></td></tr
><tr
id=sl_svn237_371

><td class="source">			item_info 		items		[item_count]<br></td></tr
><tr
id=sl_svn237_372

><td class="source">		. item_info 结构<br></td></tr
><tr
id=sl_svn237_373

><td class="source">			u30 			key					-- 常常量池中 string 索引, 如果为0, 则仅表示值<br></td></tr
><tr
id=sl_svn237_374

><td class="source">			u30 			value<br></td></tr
><tr
id=sl_svn237_375

><td class="source">	. 实例<br></td></tr
><tr
id=sl_svn237_376

><td class="source">		. instance_info 结构<br></td></tr
><tr
id=sl_svn237_377

><td class="source">			u30 			name					-- 常量池中 multiname 索引号, 必须为 QName<br></td></tr
><tr
id=sl_svn237_378

><td class="source">			u30 			super_name				-- 同上, 如果为0, 表示无父类<br></td></tr
><tr
id=sl_svn237_379

><td class="source">			u8 			flags			<br></td></tr
><tr
id=sl_svn237_380

><td class="source">			u30 			protectedNs				-- 仅当 CONSTANT_ProtectedNs 设置<br></td></tr
><tr
id=sl_svn237_381

><td class="source">			u30 			intrf_count<br></td></tr
><tr
id=sl_svn237_382

><td class="source">			u30 			interface	[intrf_count]		-- 实现的接口, 常量表中 multiname 索引号<br></td></tr
><tr
id=sl_svn237_383

><td class="source">			u30 			iinit					-- abcFile 中 method 索引号, 构造/初始化<br></td></tr
><tr
id=sl_svn237_384

><td class="source">			u30 			trait_count<br></td></tr
><tr
id=sl_svn237_385

><td class="source">			traits_info 		trait		[trait_count]		-- 特性定义<br></td></tr
><tr
id=sl_svn237_386

><td class="source">		. flags 含义<br></td></tr
><tr
id=sl_svn237_387

><td class="source">			CONSTANT_ClassSealed 		0x01 	The class is sealed: properties can not be dynamically added to instances of the class.<br></td></tr
><tr
id=sl_svn237_388

><td class="source">			CONSTANT_ClassFinal 		0x02 	The class is final: it cannot be a base class for any other class.<br></td></tr
><tr
id=sl_svn237_389

><td class="source">			CONSTANT_ClassInterface 	0x04 	The class is an interface.<br></td></tr
><tr
id=sl_svn237_390

><td class="source">			CONSTANT_ClassProtectedNs 	0x08 	The class uses its protected namespace and the protectedNs field is present in the interface_info structure.<br></td></tr
><tr
id=sl_svn237_391

><td class="source"><br></td></tr
><tr
id=sl_svn237_392

><td class="source">	. 特性(Trait)<br></td></tr
><tr
id=sl_svn237_393

><td class="source">		. 描述 对象或类的属性<br></td></tr
><tr
id=sl_svn237_394

><td class="source">		. traits_info 结构<br></td></tr
><tr
id=sl_svn237_395

><td class="source">			u30 			name					-- 常量表中 multiname 索引, 非0, 必须为 QName<br></td></tr
><tr
id=sl_svn237_396

><td class="source">			u8 			kind 					-- 低4比特=类型, 高4比特=掩码值<br></td></tr
><tr
id=sl_svn237_397

><td class="source">			u8 			data[]					-- 由 kind.类型 来决定含义<br></td></tr
><tr
id=sl_svn237_398

><td class="source">			u30 			metadata_count<br></td></tr
><tr
id=sl_svn237_399

><td class="source">			u30 			metadata	[metadata_count]	-- 仅当包含 ATTR_Metadata 掩码时, abcFile 中 metadata 索引号<br></td></tr
><tr
id=sl_svn237_400

><td class="source">		. 特性类型, kind 低4比特<br></td></tr
><tr
id=sl_svn237_401

><td class="source">			Trait_Slot 			0	trait_slot<br></td></tr
><tr
id=sl_svn237_402

><td class="source">			Trait_Method 			1	trait_method<br></td></tr
><tr
id=sl_svn237_403

><td class="source">			Trait_Getter 			2	trait_method<br></td></tr
><tr
id=sl_svn237_404

><td class="source">			Trait_Setter 			3	trait_method<br></td></tr
><tr
id=sl_svn237_405

><td class="source">			Trait_Class 			4	trait_class<br></td></tr
><tr
id=sl_svn237_406

><td class="source">			Trait_Function 			5	trait_function<br></td></tr
><tr
id=sl_svn237_407

><td class="source">			Trait_Const 			6	trait_slot<br></td></tr
><tr
id=sl_svn237_408

><td class="source">		. trait_slot 结构<br></td></tr
><tr
id=sl_svn237_409

><td class="source">			u30 			slot_id					-- 代表了位置, 如果为0, 则由 AVM2 定位<br></td></tr
><tr
id=sl_svn237_410

><td class="source">			u30 			type_name				-- 常量表中 multiname 索引<br></td></tr
><tr
id=sl_svn237_411

><td class="source">			u30 			vindex					-- 如果非0, 表示常量表中的索引, 哪个常量表由 vkind 指定<br></td></tr
><tr
id=sl_svn237_412

><td class="source">			u8 			vkind					-- 常见上面的 “Constant Kind (option_detail.kind)<br></td></tr
><tr
id=sl_svn237_413

><td class="source">		. trait_class 结构<br></td></tr
><tr
id=sl_svn237_414

><td class="source">			u30 			slot_id					-- 同上<br></td></tr
><tr
id=sl_svn237_415

><td class="source">			u30 			classi					-- abcFile 中 class 数组<br></td></tr
><tr
id=sl_svn237_416

><td class="source">		. trait_function 结构<br></td></tr
><tr
id=sl_svn237_417

><td class="source">			u30 			slot_id					-- 同上<br></td></tr
><tr
id=sl_svn237_418

><td class="source">			u30 			function				-- abcFile 中 method 数组<br></td></tr
><tr
id=sl_svn237_419

><td class="source">		. trait_method 结构<br></td></tr
><tr
id=sl_svn237_420

><td class="source">			u30 			disp_id					-- 函数重载时, 必须有相同的 disp_id<br></td></tr
><tr
id=sl_svn237_421

><td class="source">			u30 			method					-- abcFile 中 method 数组<br></td></tr
><tr
id=sl_svn237_422

><td class="source">		. 特性属性, kind 高4比特<br></td></tr
><tr
id=sl_svn237_423

><td class="source">			ATTR_Final 	0x1 	Is used with Trait_Method, Trait_Getter and Trait_Setter. It marks a method that cannot be overridden by a sub-class<br></td></tr
><tr
id=sl_svn237_424

><td class="source">			ATTR_Override 	0x2 	Is used with Trait_Method, Trait_Getter and Trait_Setter. It marks a method that has been overridden in this class<br></td></tr
><tr
id=sl_svn237_425

><td class="source">			ATTR_Metadata 	0x4 	Is used to signal that the fields metadata_count and metadata follow the data field in the traits_info entry<br></td></tr
><tr
id=sl_svn237_426

><td class="source">	. 类<br></td></tr
><tr
id=sl_svn237_427

><td class="source">		. class_info 结构<br></td></tr
><tr
id=sl_svn237_428

><td class="source">			u30 			cinit					-- abcFile 中 method 索引<br></td></tr
><tr
id=sl_svn237_429

><td class="source">			u30 			trait_count<br></td></tr
><tr
id=sl_svn237_430

><td class="source">			traits_info 		traits		[trait_count]		-- 参见 traits_info<br></td></tr
><tr
id=sl_svn237_431

><td class="source">	. 脚本<br></td></tr
><tr
id=sl_svn237_432

><td class="source">		. script_info 结构<br></td></tr
><tr
id=sl_svn237_433

><td class="source">			u30 			init					-- abcFile 中 method 索引<br></td></tr
><tr
id=sl_svn237_434

><td class="source">			u30 			trait_count<br></td></tr
><tr
id=sl_svn237_435

><td class="source">			traits_info 		trait		[trait_count]		-- <br></td></tr
><tr
id=sl_svn237_436

><td class="source">	. 函数体<br></td></tr
><tr
id=sl_svn237_437

><td class="source">		. method_body_info 结构<br></td></tr
><tr
id=sl_svn237_438

><td class="source">			u30 			method					-- abcFile 中 method 索引<br></td></tr
><tr
id=sl_svn237_439

><td class="source">			u30 			max_stack<br></td></tr
><tr
id=sl_svn237_440

><td class="source">			u30 			local_count				-- 最大本地寄存器索引+1<br></td></tr
><tr
id=sl_svn237_441

><td class="source">			u30 			init_scope_depth<br></td></tr
><tr
id=sl_svn237_442

><td class="source">			u30 			max_scope_depth				-- 作用域范围<br></td></tr
><tr
id=sl_svn237_443

><td class="source">			u30 			code_length				-- 代码长度, 字节<br></td></tr
><tr
id=sl_svn237_444

><td class="source">			u8 			code		[code_length]<br></td></tr
><tr
id=sl_svn237_445

><td class="source">			u30 			exception_count<br></td></tr
><tr
id=sl_svn237_446

><td class="source">			exception_info 		exception	[exception_count]	-- 异常处理<br></td></tr
><tr
id=sl_svn237_447

><td class="source">			u30 trait_count<br></td></tr
><tr
id=sl_svn237_448

><td class="source">			traits_info 		trait		[trait_count]		// 参见 traits_info<br></td></tr
><tr
id=sl_svn237_449

><td class="source">	. 异常<br></td></tr
><tr
id=sl_svn237_450

><td class="source">		. exception_info<br></td></tr
><tr
id=sl_svn237_451

><td class="source">			u30 			from					-- 代码范围<br></td></tr
><tr
id=sl_svn237_452

><td class="source">			u30 			to<br></td></tr
><tr
id=sl_svn237_453

><td class="source">			u30 			target					-- 跳转目标<br></td></tr
><tr
id=sl_svn237_454

><td class="source">			u30 			exc_type				-- 错误类型, 常量表中 string 索引, 0=所有错误<br></td></tr
><tr
id=sl_svn237_455

><td class="source">			u30 			var_name				-- 异常的变量名, 常量表中 string 索引<br></td></tr
><tr
id=sl_svn237_456

><td class="source"><br></td></tr
><tr
id=sl_svn237_457

><td class="source">. 5, AVM2 指令<br></td></tr
><tr
id=sl_svn237_458

><td class="source">	. (略)<br></td></tr
><tr
id=sl_svn237_459

><td class="source">		<br></td></tr
></table></pre>
<pre><table width="100%"><tr class="cursor_stop cursor_hidden"><td></td></tr></table></pre>
</td>
</tr></table>

 
<script type="text/javascript">
 var lineNumUnderMouse = -1;
 
 function gutterOver(num) {
 gutterOut();
 var newTR = document.getElementById('gr_svn237_' + num);
 if (newTR) {
 newTR.className = 'undermouse';
 }
 lineNumUnderMouse = num;
 }
 function gutterOut() {
 if (lineNumUnderMouse != -1) {
 var oldTR = document.getElementById(
 'gr_svn237_' + lineNumUnderMouse);
 if (oldTR) {
 oldTR.className = '';
 }
 lineNumUnderMouse = -1;
 }
 }
 var numsGenState = {table_base_id: 'nums_table_'};
 var srcGenState = {table_base_id: 'src_table_'};
 var alignerRunning = false;
 var startOver = false;
 function setLineNumberHeights() {
 if (alignerRunning) {
 startOver = true;
 return;
 }
 numsGenState.chunk_id = 0;
 numsGenState.table = document.getElementById('nums_table_0');
 numsGenState.row_num = 0;
 if (!numsGenState.table) {
 return; // Silently exit if no file is present.
 }
 srcGenState.chunk_id = 0;
 srcGenState.table = document.getElementById('src_table_0');
 srcGenState.row_num = 0;
 alignerRunning = true;
 continueToSetLineNumberHeights();
 }
 function rowGenerator(genState) {
 if (genState.row_num < genState.table.rows.length) {
 var currentRow = genState.table.rows[genState.row_num];
 genState.row_num++;
 return currentRow;
 }
 var newTable = document.getElementById(
 genState.table_base_id + (genState.chunk_id + 1));
 if (newTable) {
 genState.chunk_id++;
 genState.row_num = 0;
 genState.table = newTable;
 return genState.table.rows[0];
 }
 return null;
 }
 var MAX_ROWS_PER_PASS = 1000;
 function continueToSetLineNumberHeights() {
 var rowsInThisPass = 0;
 var numRow = 1;
 var srcRow = 1;
 while (numRow && srcRow && rowsInThisPass < MAX_ROWS_PER_PASS) {
 numRow = rowGenerator(numsGenState);
 srcRow = rowGenerator(srcGenState);
 rowsInThisPass++;
 if (numRow && srcRow) {
 if (numRow.offsetHeight != srcRow.offsetHeight) {
 numRow.firstChild.style.height = srcRow.offsetHeight + 'px';
 }
 }
 }
 if (rowsInThisPass >= MAX_ROWS_PER_PASS) {
 setTimeout(continueToSetLineNumberHeights, 10);
 } else {
 alignerRunning = false;
 if (startOver) {
 startOver = false;
 setTimeout(setLineNumberHeights, 500);
 }
 }
 }
 function initLineNumberHeights() {
 // Do 2 complete passes, because there can be races
 // between this code and prettify.
 startOver = true;
 setTimeout(setLineNumberHeights, 250);
 window.onresize = setLineNumberHeights;
 }
 initLineNumberHeights();
</script>

 
 
 <div id="log">
 <div style="text-align:right">
 <a class="ifCollapse" href="#" onclick="_toggleMeta(this); return false">Show details</a>
 <a class="ifExpand" href="#" onclick="_toggleMeta(this); return false">Hide details</a>
 </div>
 <div class="ifExpand">
 
 
 <div class="pmeta_bubble_bg" style="border:1px solid white">
 <div class="round4"></div>
 <div class="round2"></div>
 <div class="round1"></div>
 <div class="box-inner">
 <div id="changelog">
 <p>Change log</p>
 <div>
 <a href="/p/hproof-notes/source/detail?spec=svn237&amp;r=155">r155</a>
 by hpr...@qq.com
 on Apr 6, 2011
 &nbsp; <a href="/p/hproof-notes/source/diff?spec=svn237&r=155&amp;format=side&amp;path=/trunk/flash/avm2.txt&amp;old_path=/trunk/flash/avm2.txt&amp;old=">Diff</a>
 </div>
 <pre>[No log message]</pre>
 </div>
 
 
 
 
 
 
 <script type="text/javascript">
 var detail_url = '/p/hproof-notes/source/detail?r=155&spec=svn237';
 var publish_url = '/p/hproof-notes/source/detail?r=155&spec=svn237#publish';
 // describe the paths of this revision in javascript.
 var changed_paths = [];
 var changed_urls = [];
 
 changed_paths.push('/trunk/flash/2.5d.txt');
 changed_urls.push('/p/hproof-notes/source/browse/trunk/flash/2.5d.txt?r\x3d155\x26spec\x3dsvn237');
 
 
 changed_paths.push('/trunk/flash/avm2.txt');
 changed_urls.push('/p/hproof-notes/source/browse/trunk/flash/avm2.txt?r\x3d155\x26spec\x3dsvn237');
 
 var selected_path = '/trunk/flash/avm2.txt';
 
 
 changed_paths.push('/trunk/flash/away3d.txt');
 changed_urls.push('/p/hproof-notes/source/browse/trunk/flash/away3d.txt?r\x3d155\x26spec\x3dsvn237');
 
 
 changed_paths.push('/trunk/flash/flex.txt');
 changed_urls.push('/p/hproof-notes/source/browse/trunk/flash/flex.txt?r\x3d155\x26spec\x3dsvn237');
 
 
 changed_paths.push('/trunk/flash/molehill.txt');
 changed_urls.push('/p/hproof-notes/source/browse/trunk/flash/molehill.txt?r\x3d155\x26spec\x3dsvn237');
 
 
 function getCurrentPageIndex() {
 for (var i = 0; i < changed_paths.length; i++) {
 if (selected_path == changed_paths[i]) {
 return i;
 }
 }
 }
 function getNextPage() {
 var i = getCurrentPageIndex();
 if (i < changed_paths.length - 1) {
 return changed_urls[i + 1];
 }
 return null;
 }
 function getPreviousPage() {
 var i = getCurrentPageIndex();
 if (i > 0) {
 return changed_urls[i - 1];
 }
 return null;
 }
 function gotoNextPage() {
 var page = getNextPage();
 if (!page) {
 page = detail_url;
 }
 window.location = page;
 }
 function gotoPreviousPage() {
 var page = getPreviousPage();
 if (!page) {
 page = detail_url;
 }
 window.location = page;
 }
 function gotoDetailPage() {
 window.location = detail_url;
 }
 function gotoPublishPage() {
 window.location = publish_url;
 }
</script>

 
 <style type="text/css">
 #review_nav {
 border-top: 3px solid white;
 padding-top: 6px;
 margin-top: 1em;
 }
 #review_nav td {
 vertical-align: middle;
 }
 #review_nav select {
 margin: .5em 0;
 }
 </style>
 <div id="review_nav">
 <table><tr><td>Go to:&nbsp;</td><td>
 <select name="files_in_rev" onchange="window.location=this.value">
 
 <option value="/p/hproof-notes/source/browse/trunk/flash/2.5d.txt?r=155&amp;spec=svn237"
 
 >/trunk/flash/2.5d.txt</option>
 
 <option value="/p/hproof-notes/source/browse/trunk/flash/avm2.txt?r=155&amp;spec=svn237"
 selected="selected"
 >/trunk/flash/avm2.txt</option>
 
 <option value="/p/hproof-notes/source/browse/trunk/flash/away3d.txt?r=155&amp;spec=svn237"
 
 >/trunk/flash/away3d.txt</option>
 
 <option value="/p/hproof-notes/source/browse/trunk/flash/flex.txt?r=155&amp;spec=svn237"
 
 >/trunk/flash/flex.txt</option>
 
 <option value="/p/hproof-notes/source/browse/trunk/flash/molehill.txt?r=155&amp;spec=svn237"
 
 >/trunk/flash/molehill.txt</option>
 
 </select>
 </td></tr></table>
 
 
 




 
 </div>
 
 
 </div>
 <div class="round1"></div>
 <div class="round2"></div>
 <div class="round4"></div>
 </div>
 <div class="pmeta_bubble_bg" style="border:1px solid white">
 <div class="round4"></div>
 <div class="round2"></div>
 <div class="round1"></div>
 <div class="box-inner">
 <div id="older_bubble">
 <p>Older revisions</p>
 
 <a href="/p/hproof-notes/source/list?path=/trunk/flash/avm2.txt&start=155">All revisions of this file</a>
 </div>
 </div>
 <div class="round1"></div>
 <div class="round2"></div>
 <div class="round4"></div>
 </div>
 
 <div class="pmeta_bubble_bg" style="border:1px solid white">
 <div class="round4"></div>
 <div class="round2"></div>
 <div class="round1"></div>
 <div class="box-inner">
 <div id="fileinfo_bubble">
 <p>File info</p>
 
 <div>Size: 18800 bytes,
 459 lines</div>
 
 <div><a href="//hproof-notes.googlecode.com/svn-history/r237/trunk/flash/avm2.txt">View raw file</a></div>
 </div>
 
 </div>
 <div class="round1"></div>
 <div class="round2"></div>
 <div class="round4"></div>
 </div>
 </div>
 </div>


</div>

</div>
</div>


<script src="http://www.gstatic.com/codesite/ph/18133036155640238800/js/source_file_scripts.js"></script>

 <script type="text/javascript" src="http://www.gstatic.com/codesite/ph/18133036155640238800/js/kibbles.js"></script>
 <script type="text/javascript">
 var lastStop = null;
 var initialized = false;
 
 function updateCursor(next, prev) {
 if (prev && prev.element) {
 prev.element.className = 'cursor_stop cursor_hidden';
 }
 if (next && next.element) {
 next.element.className = 'cursor_stop cursor';
 lastStop = next.index;
 }
 }
 
 function pubRevealed(data) {
 updateCursorForCell(data.cellId, 'cursor_stop cursor_hidden');
 if (initialized) {
 reloadCursors();
 }
 }
 
 function draftRevealed(data) {
 updateCursorForCell(data.cellId, 'cursor_stop cursor_hidden');
 if (initialized) {
 reloadCursors();
 }
 }
 
 function draftDestroyed(data) {
 updateCursorForCell(data.cellId, 'nocursor');
 if (initialized) {
 reloadCursors();
 }
 }
 function reloadCursors() {
 kibbles.skipper.reset();
 loadCursors();
 if (lastStop != null) {
 kibbles.skipper.setCurrentStop(lastStop);
 }
 }
 // possibly the simplest way to insert any newly added comments
 // is to update the class of the corresponding cursor row,
 // then refresh the entire list of rows.
 function updateCursorForCell(cellId, className) {
 var cell = document.getElementById(cellId);
 // we have to go two rows back to find the cursor location
 var row = getPreviousElement(cell.parentNode);
 row.className = className;
 }
 // returns the previous element, ignores text nodes.
 function getPreviousElement(e) {
 var element = e.previousSibling;
 if (element.nodeType == 3) {
 element = element.previousSibling;
 }
 if (element && element.tagName) {
 return element;
 }
 }
 function loadCursors() {
 // register our elements with skipper
 var elements = CR_getElements('*', 'cursor_stop');
 var len = elements.length;
 for (var i = 0; i < len; i++) {
 var element = elements[i]; 
 element.className = 'cursor_stop cursor_hidden';
 kibbles.skipper.append(element);
 }
 }
 function toggleComments() {
 CR_toggleCommentDisplay();
 reloadCursors();
 }
 function keysOnLoadHandler() {
 // setup skipper
 kibbles.skipper.addStopListener(
 kibbles.skipper.LISTENER_TYPE.PRE, updateCursor);
 // Set the 'offset' option to return the middle of the client area
 // an option can be a static value, or a callback
 kibbles.skipper.setOption('padding_top', 50);
 // Set the 'offset' option to return the middle of the client area
 // an option can be a static value, or a callback
 kibbles.skipper.setOption('padding_bottom', 100);
 // Register our keys
 kibbles.skipper.addFwdKey("n");
 kibbles.skipper.addRevKey("p");
 kibbles.keys.addKeyPressListener(
 'u', function() { window.location = detail_url; });
 kibbles.keys.addKeyPressListener(
 'r', function() { window.location = detail_url + '#publish'; });
 
 kibbles.keys.addKeyPressListener('j', gotoNextPage);
 kibbles.keys.addKeyPressListener('k', gotoPreviousPage);
 
 
 }
 </script>
<script src="http://www.gstatic.com/codesite/ph/18133036155640238800/js/code_review_scripts.js"></script>
<script type="text/javascript">
 function showPublishInstructions() {
 var element = document.getElementById('review_instr');
 if (element) {
 element.className = 'opened';
 }
 }
 var codereviews;
 function revsOnLoadHandler() {
 // register our source container with the commenting code
 var paths = {'svn237': '/trunk/flash/avm2.txt'}
 codereviews = CR_controller.setup(
 {"token": null, "projectName": "hproof-notes", "domainName": null, "profileUrl": null, "assetVersionPath": "http://www.gstatic.com/codesite/ph/18133036155640238800", "assetHostPath": "http://www.gstatic.com/codesite/ph", "loggedInUserEmail": null, "relativeBaseUrl": "", "projectHomeUrl": "/p/hproof-notes"}, '', 'svn237', paths,
 CR_BrowseIntegrationFactory);
 
 codereviews.registerActivityListener(CR_ActivityType.REVEAL_DRAFT_PLATE, showPublishInstructions);
 
 codereviews.registerActivityListener(CR_ActivityType.REVEAL_PUB_PLATE, pubRevealed);
 codereviews.registerActivityListener(CR_ActivityType.REVEAL_DRAFT_PLATE, draftRevealed);
 codereviews.registerActivityListener(CR_ActivityType.DISCARD_DRAFT_COMMENT, draftDestroyed);
 
 
 
 
 
 
 
 var initialized = true;
 reloadCursors();
 }
 window.onload = function() {keysOnLoadHandler(); revsOnLoadHandler();};

</script>
<script type="text/javascript" src="http://www.gstatic.com/codesite/ph/18133036155640238800/js/dit_scripts.js"></script>

 
 
 
 <script type="text/javascript" src="http://www.gstatic.com/codesite/ph/18133036155640238800/js/ph_core.js"></script>
 
 
 
 
</div> 

<div id="footer" dir="ltr">
 <div class="text">
 <a href="/projecthosting/terms.html">Terms</a> -
 <a href="http://www.google.com/privacy.html">Privacy</a> -
 <a href="/p/support/">Project Hosting Help</a>
 </div>
</div>
 <div class="hostedBy" style="margin-top: -20px;">
 <span style="vertical-align: top;">Powered by <a href="http://code.google.com/projecthosting/">Google Project Hosting</a></span>
 </div>

 
 


 
 
 <script type="text/javascript">_CS_reportToCsi();</script>
 
 </body>
</html>

